Otßzky a odpov∞di
V tΘto rubrice najdete odpov∞di na svΘ otßzky, kterΘ m∙₧ete zasφlat na adresu
vbtipy@seznam.cz. Pokud nebudeme znßt odpov∞∩ na n∞jakou
otßzku, objevφ se v Φßsti Otßzky bez odpov∞di a budete-li znßt odpov∞∩ vy,
m∙₧ete nßm ji pomocφ v²Üe uvedenΘ adresy zaslat, rßdi ji zve°ejnφme.
Otßzky a odpov∞di
Otßzky bez odpov∞di
Otßzky a odpov∞di
Jak je mo₧nΘ nastavit program tak, aby se spouÜt∞l hned po startu Windows?
Programy, kterΘ se spouÜt∞jφ hned po startu Windows se umφs¥ujφ do slo₧ky Po spuÜt∞nφ (staΦφ umφstit zßstupce)
nebo do registru do v∞tve HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run. Pomocφ p°φkaz∙
VB vÜak nelze do tohoto mφsta registru zapisovat, proto musφte pou₧φt API funkce (jejich deklaraci naleznete v
API Text Vieweru).
Dim ret As Long, h1 As String
ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Run", 0, KEY_ALL_ACCESS, hKey)
If ret = 0 Then
h1 = "c:\project1.exe"
RegSetValueEx hKey, "MujProgram", 0, REG_SZ, h1, Len(h1)
RegCloseKey hKey
End If
Zajφmalo by m∞, jak je mo₧nΘ zjistit, kde, tj. v jakΘm modulu, procedu°e nebo funkci, doÜlo k chyb∞. Cht∞l bych
uklßdat chybovΘ hlßÜky do log souboru, ale objekt Err tuto informaci neposkytuje.
Visual Basic bohu₧el nic takovΘho neumo₧≥uje. Jedin∞ ₧e byste si to oÜet°il sßm, uklßdßnφm nßzvu funkce a Φφsla
°ßdku do globßlnφ prom∞nnΘ a tu kontroloval. Nebo pou₧φt lokßlnφ oÜet°enφ chyb, co₧ vÜak zase nenφ p°φliÜ p°ehlednΘ.
Jde ve Visual Basicu napsat program pro vymazßnφ slo₧ky TEMP?
Pro prßci se slo₧kou m∙₧ete ve VB pou₧φt n∞kolik funkcφ. Nap°. pomocφ API getTempPath zjistφte
cestu a pomocφ p°φkazu Kill vÜe z tΘto cesty sma₧ete. Pokud nechcete pou₧φvat API funkce,
pou₧ijte objekt FileSystemObject a metodu GetSpecialFolder , kterß vrßtφ po₧adovanou
cestu. Vymazßnφ vÜech soubor∙ ve slo₧ce temp by mohlo vypadat nap°. takto:
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Kill fso.GetSpecialFolder(2) & "\*.*"
V tabulce (v databßzi) mßm seznam funkcφ a procedur. Na jejich zßklad∞ bych cht∞l spouÜt∞t skuteΦnΘ funkce a procedury
ulo₧enΘ v n∞jakΘm modulu. Je tohle v∙bec ve VB mo₧nΘ?
Jak zavolat n∞jakou funkci p°φmo se nßm bohu₧el zjistit nepoda°ilo. Ale je mo₧nΘ to trochu obejφt. VB obsahuje p°φkaz
CallByName , kter² umφ volat metody n∞jakΘho objektu podle nßzvu. Pokud si ty svoje funkce a procedury vlo₧φte
do n∞jakΘ t°φdy, m∙₧ete potom pomocφ tohoto p°φkazu volat po₧adovan∞ metody. Budete-li mφt nap°. t°φdu Class1 a v nφ
metodu Metoda1, zavolßte ji takto:
Dim q As New Class1, met As String
met="Metoda1"
CallByName q, met, VbMethod, ..... (..... = parametry metody)
Pot°ebuji na disku vyhledat urΦit² soubor a nevφm jak na to.
M∙₧ete pou₧φt p°φkaz Dir a prochßzenφ celΘho disku si za°φdit sßm. Nebo, pokud jde opravdu jen o jednoduchΘ
vyhledßnφ, pou₧ijte API funkci SearchTreeForFile . Jejφ prvnφ parametr urΦuje, odkud se bude hledat (nap°.
"C:\"), druh² nßzev hledanΘho souboru a t°etφ je prom∞nnß, do kterΘ se ulo₧φ nßzev vΦetn∞ cesty v p°φpad∞ jeho nalezenφ
(v takovΘm p°φpad∞ vracφ funkce hodnotu 1). Deklarace funkce vypadß takto:
Declare Function SearchTreeForFile Lib "imagehlp.dll" _
(ByVal sRootPath As String, ByVal InputPathName As String, _
ByVal OutputPathBuffer As String) As Long
Pot°ebuji ze svΘho programu h²bat kurzorem myÜi a dßle bych cht∞l u₧ivateli zakßzat pohyb myÜφ
mimo formulß° aplikace.
Pokud chcete h²bat s kurzorem myÜi, musφte pou₧φt API funkci a to nap°. SetCursorPos . Mß pouze
dva parametry a to sou°adnice x a y, kam se mß kurzor umφstit (v pixelech). Zabrßn∞nφ pohybu myÜi mimo
formulß° nenφ problΘm, ale op∞t musφte pou₧φt API funkce. Funkce GetWindowRect
naplnφ prom∞nnou typu RECT sou°adnicemi formulß°e a jejφm p°edßnφm funkci ClipCursor
zamezφte pohybu mimo tuto zadanou oblast.
Dim r As RECT
GetWindowRect Form1.hWnd, r
ClipCursor r
Z vaÜich serißl∙ jsem se dozv∞d∞l jak odstranit zßznam z databßze. Jß bych ale pot°eboval vymazat vÜechny zßznamy
najednou. Jde to? TakΘ by m∞ zajφmalo jak ud∞lat "refresh" u ovlßdacφho prvku MSFlexGrid, nepoda°ilo se mi to jinak, ne₧ zav°φt a otev°φt formulß° s prvkem.
VÜechny zßznamy tabulky sma₧ete narßz nejlΘpe pomocφ SQL p°φkazu DELETE.
myDb.Execute "DELETE * FROM Tabulka1"
U FlexGridu je d∙le₧itΘ jak jej pou₧φvßte, ale pokud pouze na prohlφ₧enφ s tφm, ₧e editace se provßdφ v jin²ch
prvcφch, pom∙₧e vßm metoda Refresh prvku Data, na kter² je FlexGrid p°ipojen.
Pot°ebuji stßhnout n∞jak² soubor z FTP serveru. Nap°. zadßm ftp://ftp.xy.cz//help.zip a stßhnu jej na
disk C.
Stßhnutφ souboru z FTP serveru je nejjednoduÜÜφ pomocφ prvku Inet. Nastavφte vlastnost Protocol ,
URL , UserName a Password a pomocφ metody Execute m∙₧ete
zadßvat n∞kterΘ FTP p°φkazy.
Inet1.Protocol = icFTP
Inet1.URL = "ftp.xy.cz"
Inet1.UserName = "uzivatel"
Inet1.Password = "heslo"
Inet1.Execute , "GET help.zip C:\help.zip"
Jak se dß ud∞lat kontrolnφ souΦet (CRC32) souboru?
Pan Milan Slovßk nalezl na webu komponentu, kterß p°esn∞ tohle umφ. Stßhnout si ji m∙₧ete ze strßnek
www.sirocco.force9.co.uk,
welcome.to/sirocco nebo
www.preface.co.uk. Komponenta je zdarma a m∙₧ete
ji pou₧φt ve Visual Basicu verze 4 (32 bitovß verze), 5 i 6.
Otßzky bez odpov∞di
Jak je mo₧nΘ zm∞nit IP adresu a masku podsφt∞ pomocφ Visual Basicu 5.0 nebo 6.0 na Windows 2000? A je mo₧nΘ
vrßtit nastavenφ zp∞t na zφskßnφ IP z DHCP serveru?
Pot°ebuji vytvo°it aplikaci, kterß by um∞la °φct jin²m program∙m, aby se nezobrazovali v TaskBaru. Tzn. stejn∞
jako kdy₧ u svΘ aplikace nastavφm ShowInTaskBar na False .
ZkouÜel jsem p°idat bitmapu do menu pomocφ API funkce SetMenuItemBitmaps. V normßlnφm menu
to funguje. Jakmile vÜak stejn² postup pou₧iji v PopupMenu, obrßzek se nezobrazφ.
Rßd by som zφskal informßcie o API funkcißch pre prßcu s resources, sp⌠sob ich volania
vo VB a informßcie potrebnΘ pre sprßvny chod funkcie:
loadresource, findresorce, freeresource, updateresource. Chcel by som urobi¥ mal²
lokalizßtor, a na to s· potrebnΘ tieto funkcie, v angliΦtine (MSDN) som Φosi porozumel,
ale neviem ako loadnutΘ resource zobrazi¥ v Image, txt objekte, a ako ich updatova¥ do
s·boru.
V MSDN je zmienka o pou₧itφ interfacu k objektom Windows Exploreru na vlo₧enie
objektov (Listview, treeview, combo, taskbar at∩ ) do vlastn²ch aplikßciφ, ale prilo₧enΘ
vzory s· pre C++. Chcem Vßs po₧iada¥ o nejakΘ moduly alebo prφklady pre pou₧itie t²chto
objektov, za Φo Vßm budem ve╛mi v∩aΦn² ! Zaujφma ma hlavne zobrazenie Listview, treeview,
combo z exploreru a objekty z taskbaru (tabsysview, systraj objekt, objekt hodφn a ponuky
ètart pre vytvorenie novΘho typu taskbaru). Ve╛mi Vßs prosφm o pomoc.
|