10 nagyszerű
makró
Adjon turbótöltést
Office alkalmazásainak az alábbi konyhakész
makrókkal!
Szerző: Karen Kenworthy
A szoftverfejlesztők folyamatosan javítják,
sőt fejlesztik alkalmazásaikat, de néha
nem jut eszükbe, mire vágyunk igazán. Csupán
néhány apró trükkre lenne szükség,
hogy a munka gyorsabban haladhasson. Szerencsére már
senkinek sem kell várnia a legújabb termékek
megjelenésére. Elérkezett az idő
legkedvesebb alkalmazásaink finomhangolására,
sőt néhány idegesítő programhiba
kiirtására is. Mindehhez nem kell más, csupán
egy makró, egy program ami azt használja és
egy ici-pici segítség a Windows Magazin felhasználóbarát
stábjától.
A profik által csupán script-nek becézett
makró tulajdonképpen csupán egy lista a
tennivalókról, amiből a számítógép
megtudhatja mit kell tennie, és hogyan végezheti
el az adott feladatát. Egy-egy jól megírt
makró sokkal eredményesebbé teheti a munkánkat.
Hogy ez a bimbódzó kapcsolat jól is végződjön,
készítettünk 10 nagyszerű makrót,
amit bárki kedve szerint használhat, átírhat
vagy akár kombinálhat, hogy megfeleljen igényeinek.
A csapat néhány tagja fantasztikus új lehetőségeket
nyújt, néhányuk megváltoztat vagy
kiiktat veszélyes program elemeket, a maradék pedig
lehetőséget ad, hogy csapatmunkára bírjuk
különféle programjainkat.
Az összes ismertetett makró letölthető
a Windows Magazin honlapjáról a http://www.winmag.com/karen
címen. Minden letöltött makró azonnal
futtatható és tetszés szerint módosítható
az egyéni igényeknek megfelelően. Természetesen
a részletes telepítési és futtatási
útmutató ugyanúgy megtalálható
minden egyes makróhoz, mint a makrók különféle
alkalmazásokhoz illő variációinak
bő választéka.
A makrókat használó programok - beleértve
a Microsoft Office különféle elemeit és
magát a Windows-t - a Windows Scripting Host-ot (Windows
szöveges felület, WSH) használják. A
WSH alapkiszereltségben megtalálható a Windows
98-ban és a Windows 2000-ben, a Windows 95-höz pedig
letölthető az ingyenes kiegészítés
a Microsoft honlapjáról.
Bár az alábbi példák csupán
a Windows valamint a Microsoft Word, Excel és Outlook
felülvezérlésére hivatottak, a technika
könnyen alkalmazható szinte mindegyik modernebb alkalmazás
irányítására. A példák
Visual Basic for Application (VBA) nyelven íródtak,
de könnyen lefordítható más népszerű
makró kódra, mint a Jscript vagy a JavaScript.
Szócsere
Sok problémát okozhat 2 szó felcserélése.
például minden ,eladó" ,vevő"-re
váltása és viszont, főleg egy többoldalas
íromány esetében. Persze kivitelezhető,
de nem könnyű. 2 hagyományos keresés-csere
művelet nem elég, legalább háromra
van szükség és kiemelkedően jó
memóriára, nehogy összezavarodjunk és
hibázzunk.
Jobb megoldásra lenne szükség? Csupán
futtatni kell a Szócserét. A makró indításkor
egy kis párbeszédablakot jelenít meg, amiben
az átcserélni kívánt szavak vagy
kifejezések után érdeklődik. Természetesen
a program tartalmazza a Word-ben is megismert szokásos
,behelyettesítés" és ,csak teljes szó"
lehetőségeket ahogy el is várhatjuk. Ha
rábökünk a ,Mindent cserél" gombra,
a script automatikusan átvizsgálja a teljes szöveget,
vagy bármelyik kiválasztott részét,
és végrehajtja a kívánt változtatásokat.
A motorházban
A WinMag által készített Szócsere
egyes-egyedül végrehajtja mind a 3 szükséges
különálló keresés-csere műveletet
működése során. Először
is rátalál minden egyes megjelenésére
az első cserélendő kifejezésnek,
és azt ideiglenesen kitölti. A kitöltő
szerepét a talányos XjlasOmcmhoX szócska
látja el, ami nem valószínű, hogy
feltűnik bármely eljövendő szövegben
(kivéve persze most a ford.). Következő lépésként
a Szócsere helyettesíti a cserélendő
második szó minden előfordulását
az elsővel, végül pedig a makró átírja
az ideiglenes kitöltőt a második megadott
kifejezéssé.
Private Sub btnReplaceAll_Click()
Dim rng As Range
If (txtSwap1.Text < = " ") Or (txtSwap2.Text <
= " ") Then
MsgBox "Swap text cannot be blank", vbonly _
Or vbExclamation, "Swap error"
Exit Sub
End If
Set rng = Selection.Range
frmSwap.Caption = "Swap Working "
With rng.find
.Text = txtSwap1.Text
.Replacement.Text = "XjlasOcmhoX"
.ClearFormatting
.Replacement.ClearFormatting
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = chkCase.Value
.MatchWholeWord = chkWhole.Value
.MatchAllWordForms = chkWordForms.Value
.MatchWildcards = chkWildcards.Value
.MatchSoundsLike = chkSoundsLike.Value
.Execute Replace: = wdReplaceAll
End With
With rng.find
.Text = txtSwap2.Text
.Replacement.Text = txtSwap1.Text
.ClearFormatting
.Replacement.ClearFormatting
.Execute Replace: = wdReplaceAll
End With
With rng.find
.Text = "XjlasOcmhoX"
.Replacement.Text = txtSwap2.Text
.Execute Replace: = wdReplaceAll
End With
frmSwap.Caption = "Swap Done"
btnCancel.Caption = "Close"
End Sub |
WSH levelezés
Ez a hasznos kis makró átveszi az irányítást
az Outlook (vagy más MAPI alapú levelezőprogram)
egy része felett, és fájl küldésére
utasítja. Ha az ,asztal"-ra helyezzük a programfájlt,
elég egy dupla kattintás a művelethez. Kiválóan
alkalmas időszaki jeletések vagy más, gyakran
frissítendő írások kiküldésére.
A motorházban
Feltétlenül meg kell változtatni a makró
egyes részeit, saját igényeinkhez igazítva
a kiválasztott fájl nevét, a megcélzott
címet és az üzenet tárgyát,
mielőtt a programot használatba állítjuk.
Természetesen megadható több adatállomány
vagy címzett, pontosvesszővel elválasztva
(pl. terjesztes@byte.hu; posta@byte.hu).
Dim objNameSpace
Dim objOutlookApp
Dim objItem
Set objOutlookApp = CreateObject("Outlook.Application")
Set objNameSpace = objOutlookApp.GetNameSpace(,MAPI")
Set objItem = objOutlookApp.CreateItem(0) 'MailItem
objItem.To = "karenk@winmag.com"
objItem.Attachements.Add "C:\WinMag.log", 1, , _
"WinMag Log File"
objItem.Subject = "WinMag Log File"
objItem.Display
objItem.Send
Wscript.Quit
'Mail From WSH |
Fájl
megnyitás/mentés korlátozása
Ha egy munkahelyen több felhasználó is dolgozik
ugyanazon a gépen, jogos az igény, hogy korlátozhatóak
legyenek a hozzáférési jogok a gépen
belül, sőt, akár hálózaton keresztül
is. Ez a makró lehetőséget ad annak szabályzására,
hogy a belépési információja alapján
a felhasználó melyik World állományt
tekintheti meg és szerkesztheti át. A Fájl/megnyitás
menüpontot választva ugyanis csak az engedélyezett
állományok jelennek meg, a számítógép
és a hálózat fennmaradó része
elérhetetlen.
A korlátozó információ a regisztrációs
adatbázis CURRENT_USER részében kap helyet.
Természetesen ez a makró is szabadon módosítható,
hogy teljes hozzáférést biztosítsunk
a felhasználóknak.
A motorházban
A makró átveszi a Word beépített
File/Open folymatának irányítását.
A hagyományos megnyitás ablak helyett amellyel
az egész merevlemezt és a teljes hálózatot
be lehet barangolni egyéni ablakot jelenít meg,
amely csupán a megtekinthető fájlokat tartalmazza.
Mivel a makró a navigálást letiltja, a dokumentumfájloknak
a megfelelő könyvtárban kell lenniük,
a szokott .doc kiterjesztéssel.
A makró a Word Mentés másként
menüpontja felett is átveszi a vezérlést,
hogy megelőzze a dokumentumok elfogadott könyvtáron
kívülre mentését. Minden esetben a
hagyományos mentés menüpontot használja
megőrizve a fájl eredeti nevét és
helyét.
Global Const WMR = "WinMag
Restrictor"
Sub FileOpen()
Dim fid As String
Dim RestrictPath As String
Dim RestrictMask As String
RestrictPath = GetSetting("WinMag", "Restrict",
"Path", "")
If (RestrictPath > " ") Then
If (Right$(RestrictPath, 1) < > "\") Then
RestrictPath = RestrictPath & "\"
End If
End If
RestrictMask = GetSetting("WinMag", "Restrict",
"Mask", "")
Load frmOpen
frmOpen.lstFiles.Clear
On Error Resume Next
ChDir RestrictPath
If Err Then
MsgBox "Directory " & Chr$(34) & RestrictPath
& _
Chr$(34) & " does not exist" & vbCrLf &
_
"Contact your System Administrator", _
vbOKOnly Or vbExclamation, WMR
Exit Sub
End If
fid = Dir(RestrictPath & RestrictMask)
While fid > " "
frmOpen.lstFiles.AddItem fid
fid = Dir
Wend
If frmOpen.lstFiles.ListCount < = 0 Then
MsgBox "No files available", vbOKOnly _
Or vbExclamation, WMR
Exit Sub
Unload frmOpen
End If
frmOpen.Show
If frmOpen.OpenCancel Then Exit Sub
fid = frmOpen.lstFiles.List(frmOpen.lstFiles.ListIndex)
ChangeFileOpenDirectory RestrictPath
Documents.Open FileName: = fid, ConfirmConversions: = False,
_
ReadOnly: = frmOpen.chkReadOnly.Value, _
AddToRecentFiles: = False, PasswordDocument: = "",
_
PasswordTemplate: = "", Revert: = False, _
WritePasswordDocument: = "", WritePasswordTemplate:
= "", _
Format: = wdOpenFormatAuto
Unload frmOpen
End Sub
Sub FileSaveAS()
ActiveDocument.Save
End Sub |
Korlátozás
felügyelet
Természetesen az előző makróhoz szükség
van egy rendszergazdára, aki létrehozza, és
időröl-időre módosítja a korlátozást
a változó igényeknek megfelelően.
A Korlátozás felügyelet makró létrehozza
és módosítja a CURRENT_USER egyes regisztrációs
bejegyzéseit. Először is rákérdez,
melyik lemezegység melyik könyvtára tárolja
majd a dokumentumokat. Második lépésként
a szűrési séma beállítását
kéri (mint például az ajánlott: *.doc).
Végül megjeleníti a rendszergazda által
bejegyzett információkat, és elmenti azokat
a regisztrációs adatbázisban.
A motorházban
A WSH alkalmat ad a korlátozott könyvtár kiválasztására,
vagy akár a korlátozás kiiktatására.
Éppen ezért az a felhasználók gépein
nem lehet elérhető, hiszen segítségével
kijátszhatnák a védelmet. Mivel a felügyelőprogram
is WSH környezetben fut, a beállítások
elvégzése után könnyen eltávolítható.
A bevitt információt a WSH beépített
WSHShell.RegWrite eleme tárolja. A makró végén
található 3 megjegyzés sor aposztroffal
kezdve. A jelek törlésével a Fájl megnyitás/mentés
korlátozása makró által a regisztrációs
adatbázison végrehajtott minden változás
törlődik, és az adatbázis visszaáll
eredeti állapotába. A változtatás
természetesen egyben leállítja a korlátozást.
Az alábbi technika szabadon változtatható,
így bármi megjeleníthető, megváltoztatható,
vagy éppen törölhető a regisztrációs
adatbázisban.
Dim WSHShell
Dim strPath
Dim strMask
Dim intYorN
Dim strRegKey
strRegKey = " HKCU\Software \VB and VBA Program Settings
\WinMag \Restrict \"
Set WSHShell = WScript.CreateObject("WScript.Shell")
strPath = InputBox("Enter restricted Drive: \Path",
_"WinMag Restrictor")
If (strPath < = " ") Then WScript.Quit
If Right(strPath, 1) < > "\" Then strPath = strPath
& "\"
strMask = InputBox("Enter restricted Mask (e.g. *.doc)",
_
"WinMag Restrictor")
If (strMask < = " ") Then WScript.Quit
intYorN = MsgBox("Storing:" & vbCrLf & "Path:
" & strPath & vbCrLf _
& "Mask: " & strMask, vbOKCancel, "WinMag
Restrictor")
if intYorN = vbCancel Then WScript.Quit
WSHShell.RegWrite strRegKey & "Path \", strPath
WSHShell.RegWrite strRegKey & "Mask \", strMask
'The following three lines can be enabled to delete all Restrictor
Reg Entries
'WSHShell.RegDelete strRegKey & "Mask \"
'WSHShell.RegDelete strRegKey & "Path \"
'WSHShell.RegDelete strRegKey
WScript.Quit |
Az MRU
eltávolítása
A trükkösebb felhasználók könnyen
elcsábulhatnak és megpróbálhatják
kijátszani a Fájl megnyitás/mentés
korlátozását azzal, hogy az alkalmazás
MRU-jából (Most Recently Used, legutoljára
használt) hívják le a fájlokat. Ez
a kis lista általában a fájl menü legaljában
található és az utoljára megnyitott
4 fájl nevét és elérési útját
tartalmazza, így lehetőséget nyújtva
azok behívására a korlátozás
ellenére. Ezt a rést elzárandó, és
a legutóbbi munkáink iránt kiváncsiskodók
megfricskázására az MRU eltávolitása
makró kikapcsolja az alkalmazás MRU listáját.
Ugyanezzel a technikával bármely más programban
eltüntethető az MRU lista. Példának
okáért a FeatureInstall = msoFeatureInstall OnDemandWithUI
sor, a makróban bárhol elhelyezve automatikusra
állítja az Office Kérésre telepítés
tevékenységét, így az új elemek
első használatukkor a felhasználó
közbelépése nélkül kerülnek
fel a merevlemezre.
A motorházban
A Word minden inditásakor futtatja a makrók AutoExec
soraiban elhelyezett utasításait. Ha a makrót
a NORMAL.DOT-ba helyezzük, minden egyes dokumentum megnyitásakor
működésbe lép. Más sablonba helyezve
pedig csak abban az esetben lép életbe a script,
ha az adott sablonnal hozunk létre dokumentumot (például:
fax fedőlap, jelentés).
Az MRU eltávolítása a Word DisplayRecentFiles
tulajdonságát False-ra állítva éri
el hatását. Hogy megakadályozzuk a felhasználót
ennek visszaállításában, a makró
módosítja azt az utasítást, amelyet
a Word Eszközök/Beállítások menüpontja
futtat. Az új parancs először is eltünteti
az MRU listát, majd megjeleníti a hagyományos
Beállítások panelt. Miután a felhasználó
elvégezte az általa igényelt változtatásokat
a makró újból kikapcsolja a listát.
Ezzel felülíródik minden olyan változás,
ami az MRU-t érintette, miközben a többi új
beállítás érvényes marad.
Sub AutoExec()
Application.DisplayRecentFiles = False
End Sub
Sub ToolsOptions()
Dim dlg As Dialog
Application.DiplayRecentFiles = False
Set dlg = Dialogs(wdDialogToolsOptions)
dlg.Show
Application.DisplayRecentFiles = False
End Sub |
Szerkesztés
lista
Sokszor hasznos lenne, ha kedvenc alkalmazásaink listát
készítenének arról milyen állományokat
szerkesztettünk át, és mikor. Most már
képesek erre. Bár az alábbi példa
a Wordhöz készült, ugyanezzel a technikával
könnyen javítható az Excel, és még
sok más program teljesítménye. A jegyzék
megnyitása és a bejegyzések mentése
automatikusan folyik a háttérben, nem igényel
semmiféle felhasználói közbelépést.
A lista a WINMAG.LOG nevü fájlban található,
amely tartalmazza minden egyes érintett állomány
teljes nevét a teljes elérési úttal
egyetemben, valamint a megnyitás, vagy mentés dátumát
és időpontját. Amennyiben más helyre,
vagy més néven szeretnénk a listánkat
menteni, könnyen megtehetjük az objLogger.LogFileName
= ,C:\WinMag.log" sor megváltoztatásával,
példának okáért objLogger.LogFileName
= ,C:\My Documents\LogEntries.txt" sorrá.
A feljegyzések TSV (tabulátorral elválasztott
értékek) formátumban kerülnek tárolásra,
így a későbbiekben könnyen beilleszthetőek
táblázatokba vagy jelentésbe.
A motorházban
A listakészítő program néhány
új sor bejegyzésével kezdi a munkát
az AutoExec sorban. Ezen sorok egyike létrehoz egy előzetes
példát a makró listázására.
Ez a példa hozza létre a későbbiekben
az összes automatikus feljegyzést. Egy másik
sor tartalmazza a naplófájl nevét, hogy
az a makró összes eleme számára elérhető
legyen. Az utolsó sor az AutoExec részben elkészíti
az első bejegyzést, feljegyezve a Word elindításának
pontos időpontját.
A makró fennmaradó része a Logger nevezetü
modulban kap helyet. Itt találhatóak az alkalmazás
eseményeit kezelő utasítások. Az
egyik ilyen parancs minden alkalommal elindul, ahányszor
csak megnyílik egy dokumentum, egy másik a bezáráskor
vagy mentéskor használatos, a harmadik alprogram
új dokumentumok létrehozásakor indul el,
az utolsó pedig közvetlenül a Word-ből
való kilépés előtt. Mindegyikük
egy másik alprogramhoz, a LogWrite-hoz, fordul, hogy a
merevlemezre mentse a bejegyzéseket.
' WinMag Module
AutoExec()
Set objLogger = New Logger
objLogger.LogFileName = ,C:\WinMag.log"
objLogger.Comment ,Start", ,Word"
End Sub
' Logger Class Module
Public LogFileName As String
Private WithEvents WordApp As Word.Application
Public Sub Comment(c1 As String, Optional c2 As String)
If IsMissing(c2) Then
LogWrite c1
Else
LogWrite c1, c2
End If
End Sub
Private Sub LogWrite(d As String, Optional a As String)
Dim logtime As Date
logtime = Now
Open LogFileName For Append Access Write Lock Write As 1
Print 1, Format$(logtime, ,short date"); vbTab;
Print 1, Format$(logtime, ,long time"); vbTab;
Print 1, d;
If Not IsMissing(a) Then Print 1, vbTab; a;
Print 1, ,"
Close 1
End Sub
Private Sub Class_Initialize()
Set WordApp = Application
End Sub
Private Sub WordApp_DocumentBeforeClose(byVal _
Doc As Document, Cancel As Boolean)
LogWrite ,Close", Doc.FullName
End Sub
Private Sub WordApp_DocumentOpen(By Val Doc As Document)
LogWrite ,Open", Doc.FullName
End Sub
Private Sub WordApp_NewDocument(By Val Doc As Document)
LogWrite ,Create", Doc.FullName
End Sub
Private Sub WordApp_Quit()
LogWrite ,Stop","Word"
End Sub |
Gyors
számláló
Sok alkalmazás képes megjeleníteni a segítségével
készített fájl szavainak számát.
De ezek legtöbbje sok más információt
is tartalmaz, mint például a karakterek, mondatok,
bekezdések száma. Ha csupán a szavak számlálására
van szükség, a mellékes információk
összegyűjtése érzékelhetően
lassítja a folymatot. A Gyors számláló
a lehető legegyszerűbben megszámolja a szavakat
és megjeleníti az eredményt az alkalmazás
ablakának legaljában található állapotsorban.
Amennyiben szavak helyett a karaktereket akarjuk megszámoltatni
a harmadik sort át kell szerkeszteni StatusBar = ,Words
in document:" & ActiveDocument.Characters.Count (esetleg
a ,Characters in document:" csere is helyénvaló
lehet a ford).
A motorházban
A módszer olyan egyszerű, amennyire egy makró
csak lehet. Ez a rövid program először megnézi
a szavak számát az éppen használt
dokumentum ActiveDocument Word.Count tulajdonságában.
Majd megjeleníti a számot a StatusBar tulajdonságaként
tárolva. Amennyiben bármilyen hiba történik,
a makró hibaüzenettel jelzi, nincsen aktív
dokumentum.
Sub QwordCount()
On Error Resume Next
StatusBar = ,Words in document:" &ActiveDocument.Words.Count
If Err Then StatusBar = ,No active document"
End Sub |
Nagybani
Csere
Olyan információk, mint például telefonszámok,
címek, nevek, és márkanevek időröl
időre változnak. Néha egyszerre több
adat is elavul. Amikor ez bekövetkezik, igencsak jól
jön ez a makró. A program beolvassa a cserélendő
szavakat tartalmazó fájlt és automatikusan
végrehajt minden kért változtatást
az éppen használt írásban. A cserélendőket
tartalmazó állomány egy egyszerű szövegfájl,
amelyben minden sor egy teljes változtatást tartalmaz.
Először a cserélendő szót, vagy
kifejezést, utána pedig tabulátorral elválasztva
azt a kifejezést, amire cserélni akarjuk. A program
segítségével annyi változtatást
hajthatunk végre egyszerre, amennyire csak szükségünk
van.
A motorházban
A makró először megjeleníti a párbeszédablakot,
ahol beüthető a változtatandókat tartalmazó
fájl neve és választani lehet a hagyományos
keresés-csere lehetőségek közül.
Ha az ablak Replace All (mindent cserél) gombjára
bökünk a program azonnal beolvassa a megadott állományt
és végrehajt minden abban megadott helyettesítést.
Az Undo All gombot választva minden addig tett változtatás
törlődik.
Global Const WMBR = ,WinMag
Bulk Replace"
Private Sub btnReplace_Click()
Dim strLine As String
Dim strToken() As String
Dim intLine As Long
On Error Resume Next
Open txtFID.Text For Input As 2
If Err Then
MsgBox ,Bulk Replace Request file not found", _
vbOkOnly Or vbExclamation, WMBR
Exit Sub
End If
StatusBar = ,Bulk Replace in progress "
Line Input 2, strLine
While (Err = 0) And (Len(strLine) > 3)
intLine = intLine + 1
strToken = Split(strLine, vbTab, 3)
If (strToken(0) > , ") And (strToken(1) > , ")
Then
Repl strToken (0), strToken(1)
Else
MsgBox ,Error in line" & Format$(intLine), _
vbOkOnly Or vbExclamation, WMBR
End If
Line input 2, strLine
Wend
Close 2
Status Bar = ,Bulk Replace done"
btnCancel.Caption = ,Close"
txtFID.SetFocus
End Sub
Private Sub Repl(strFind As String, strRepl As String)
Dim rng As Range
Set rng = Selection.Range
With rng.find
.Text = strFind
.Replacement.Text = strRepl
.ClearFormatting
.Replacement.ClearFormatting
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = chkCaseValue
.MatchWholeWord = chkWhole.Value
.MatchAllWordForms = chkWordForms.Value
.MatchWildcard = chkWildcards.Value
.MatchSoundsLike = chkSoundsLike.Value
.Execute Replace: = wdReplaceAll
End With
End Sub |
E-mail
figyelmeztető
Legtöbb levelezőprogram figyelmeztet új üzenet
érkezésekor. De az általuk nyújtott
értesítés általában szinte
észrevétlen, csupán egy apróbb ikonból,
rövid dallamból vagy csöppnyi ablakocskából
áll. Ez a makró megváltoztatja az Outlook
új levél érkezésére adott
figyelmeztetését, hogy még véletlenül
se lehessen azt figyelmen kívül hagyni. Új
üzenet érkezésekor az E-mail figyelmeztető
megjelenít egy jókora párbeszédablakot,
és folyamatosan játssza a megadott Wav vagy MIDI
fájlt mindaddig, míg az OK gombbra kattintva tudomásul
nem vesszük az üzenet érkezését.
A motorházban
A makró az Outlook új levél esetén
induló programjában kezd működni. Ez
az alprogram (Application_NewMail) automatikusan elindul minden
alkalommal, ha új levél érkezik. Az általunk
módósított verzió az E-mail figyelmeztető
párbeszédablakát jeleníti meg, utána
pedig újra és újra elindítja a Windows
API PlaySound elemét, hogy lejátssza a kiválasztott
dallamot.
Private Sub Application_NewMail()
frmAnnoy.Show
DoEvents
While Not (frmAnnoy.StopFlag)
frmAnnoy.Annoy
Wend
Unload frmAnnoy
End Sub
Public StopFlag As Boolean
Private Declare Function PlaySound Lib ,winmm.dll" _
Alias ,PlaySoundA" _
(By Val lpszName As String, By Val hModule As Long, _
By Val dwFlags As Long) As Long
Public Sub Annoy ()
While Not StopFlag
PlaySound ,C:\windows\media\chimes.wav", 0, 0
DoEvents
Wend
End Sub
Private Sub btnOK_Click()
StopFlag = True
End Sub
|
Ügynök
Ügynök a Microsoft által adományozott
neve annak a technológiának, ami azokat a cuki
rajzfilmfigurákat jeleníti meg amíg egy
Office alkalmazást futtatunk. Ez a technológia
általános eleme lesz a Windows 2000-nek, de Windows
98-hoz és 95-höz is ingyenesen letölthető
a kiegészítő program a http://msdn.microsoft.com/workshop/imedia/agent/agentdl.asp
címről. A kiegészítés telepítése
után más alkalmazásokban is használhatóak
a figurák, beleértve a saját makrókat
is.
Az alábbi makró megmutatja, hogyan lehet egy Ügynökkel
(Peedy-vel a papagájjal) megjeleníttetni az általunk
választott információt. Sőt, a szintén
ingyenesen letölthető irás-beszéd átalakítóval
Peedy akár ki is mondhatja amit hallani szeretnénk.
Ha másik Ügynököt szeretnénk szerepeltetni,
csupán meg kell változtatni a strName = ,Peedy"
sort strName = ,Genie" vagy ,Merlin" vagy ,Robby"
vagy más ügynök nevére.
Szintén megváltoztatható az Ügynök
üdvözlőmondata is a objChar.Speak (,Hello! I'm
" &strName) sor átváltoztatással
példának okáért objChar.Speak (,Howdy
Pardner!") sorrá.
A motorházban
Az Ügynökök a gesztusok széles választékával
rendelkeznek. Ez a makró ebből kettőt mutat
be: az integetést és a fülelést. Az
Ügynökök az alkalmazások felpezsdítése
mellett akár arra is használhatóak, hogy
rendszergazdaként fontos információkat kérjünk
a felhasználóktól. További példák
és letölthető elemek találhatóak
a http://www.winmag.com
címen.
Dim objAgent
Dim objChar
Dim objRequest
Dim txtSpeak
Dim strName
Set objAgent = CreateObject(,Agent.Control.1")
objAgent.Connected = True
strName = ,Peedy"
objAgent.Characters.Load strName, strName & ,.acs"
Set objChar = objAgent.Characters(strName)
'objChar.LanguageID = &h409
objChar.Show
objChar.Speak (,Hello! I'm , & strName)
objChar.Play ,Wave"
txtSpeak = ,What should I say next?"
While txtSpeak > , "
objChar.Speak txtSpeak
'objChar.Play ,Hearing_1"
txtSpeak = InputBox(,What should I say next?", _
,WinMag Speak")
Wend
objChar.Speak ,Goodbye!"
objChar.Hide
MsgBox ,Goodbye!", vbokonly, ,WinMag Speak"
Set objChar = Nothing
objAgent.Characters.Unload strName
WScript.Quit |
Karen Kenvorthy a Windows Magazine segéd-szerkesztője.
Ha éppen nem cikket ír, különféle
Visual Basic programokat kódol vagy rendfentartó
szervek tanácsadója a számítógépes
bűnözéshez kapcsolódó ügyekben. |