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.