V této rubrice najdete odpovědi na své otázky, které můžete zasílat na adresu vbtipy@atlas.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.
Uz rok sa snazim programovat vo Visual Basic 5 a celkom mi to ide. Ale neviem prist na
jednu vec. Chcel by som urobit taky program, ktory by otvoril hru Solitaire.
To zatial viem spravit, ale neviem spravit to, ze ked kliknem na krizik,
co je na vrchu okna, na tom modrom (ukoncit program), aby sa mi ukoncil program vo VB5.
Pokud chcete, aby se ukončil program, po ukončení hry Solitaire, spusťte Solitaire pomocí následující funkce (program se po spuštění zastaví) a po jejím ukončení, tzn. po ukončení Solitaire dejte funkci na ukončení programu.
Private Type STARTUPINFO cb As Long lpReserved As String lpDesktop As String lpTitle As String dwX As Long dwY As Long dwXSize As Long dwYSize As Long dwXCountChars As Long dwYCountChars As Long dwFillAttribute As Long dwFlags As Long wShowWindow As Integer cbReserved2 As Integer lpReserved2 As Long hStdInput As Long hStdOutput As Long hStdError As Long End Type Private Type PROCESS_INFORMATION hProcess As Long hThread As Long dwProcessID As Long dwThreadID As Long End Type Private Declare Function WaitForSingleObject Lib "kernel32" _ (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long Private Declare Function CreateProcessA Lib "kernel32" _ (ByVal lpApplicationName As Long, ByVal lpCommandLine As String, _ ByVal lpProcessAttributes As Long, ByVal lpThreadAttributes As Long, _ ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, _ ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As Long, _ lpStartupInfo As STARTUPINFO, lpProcessInformation As PROCESS_INFORMATION) As Long Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long Private Const NORMAL_PRIORITY_CLASS = &H20& Private Const INFINITE = -1& Public Sub ExecCmd(cmdline$) Dim proc As PROCESS_INFORMATION, start As STARTUPINFO start.cb = Len(start) ret& = CreateProcessA(0&, cmdline$, 0&, 0&, 1&, NORMAL_PRIORITY_CLASS, 0&, 0&, start, proc) 'Wait for the shelled application to finish: ret& = WaitForSingleObject(proc.hProcess, INFINITE) ret& = CloseHandle(proc.hProcess) End Sub
Použití potom vypadá takto:
ExecCmd("C:\WINDOWS\solitaire.exe") End
Mam zasifrovanu databazu urobenu v MS Access97, ako urobit aby mi ju otvoril VB5,
neviem kde mam napisat heslo.
Pokud používáte přímo kód, např. DAO, potom databázi otevřete tímto způsobem:
Dim dbMain As Database Set dbMain=OpenDatabase("cesta",False, False,";pwd=heslo")
Pokud používáte prvek DataControl, který neumí otevřít databázi s heslem, musíte nejdříve otevřít databázi, v ní potom recordset a ten přiřadit prvku DataControl:
Dim dbmain As Database, qry As Recordset Set dbmain = OpenDatabase(App.Path & "pokus.mdb", False, False, ";pwd=heslo") Set qry = dbmain.OpenRecordset("pokus", dbOpenDynaset) Set Data1.Recordset = qry
Jak udělat ve formuláři, abych neměl osvětlené to X, kterým se formulář zavírá. Tím myslím
aby X bylo Disabled.
Jediný způsob, který mě napadl, je smazat ze systémového menu položku Zavřít, tím se nastaví "X" na Disabled. V příkladu předpokládám menu Zavřít na šesté pozici. Pokud je menu jiné, musíte zvolit jiné číslo (parametr nPosition funkce DeleteMenu) nebo mazat menu podle názvu.
Private Declare Function GetSystemMenu Lib "user32" _ (ByVal hwnd As Long, ByVal bRevert As Long) As Long Private Declare Function DeleteMenu Lib "user32" _ (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long Private Const MF_BYPOSITION = &H400& Private Sub Form_Load() Dim myMenu As Long myMenu = GetSystemMenu(Me.hwnd, 0) DeleteMenu myMenu, 6, MF_BYPOSITION End Sub
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.