| |
|
|
Thomas Freier | Au cours de sich cela Hauptprogramm aufbaut (normal ca. 1s) et ensuite dans qui Warteschleife ist, soll un avec Shell gestartetes Such-Programme (ici Avery.exe genannt) überprüfen, si et wohin une bestimmte *.exe vorhanden ist. Pour Rechnerneustart et Aufruf des Hauptprogramms verharrt es ca. 25s et reagiert pas. Eigentlich soll doch cela Hauptprogramm plus bedienbar rester. Pour erneutem Start des Hauptprogramms verharrt es seulement encore ca. 4s. Ist cela seulement chez mir so ou bien wohin fais je une faute? Minibeispiel KompilierenMarqueSéparation $P+
SetErrorLevel 0
DEF GETSYSCOLOR(1) !"USER32","GetSysColor"
DECLARE T&,TAB1&,TAB2&
DECLARE EDIT1&,EDIT2&,EDIT3&
DECLARE ELEMENT1&,ELEMENT2&,ELEMENT3&
WINDOWSTYLE 538
WINDOWTITLE "Tabtest"
WINDOW 209,169-500,250
SETTRUECOLOR 1
DECLARE ENDE%
CLS GETSYSCOLOR(15)
USEFONT "MS Sans Serif",13,0,0,0,0
SETDIALOGFONT 1
T& = CREATE("TABCTRL",%HWND,"Reiter1",0025,0027,0395,0172)
TAB1&=@InsertTab(T&,1,"Reiter2")
TAB2&=@InsertTab(T&,2,"Reiter3")
ELEMENT1&=Control("STATIC","",$54001106,10,30,200,100,t&,0,%hinstance,$0)
EDIT1&=Create("Edit",ELEMENT1&,"TAB 0",10,10,100,18)
ELEMENT2&=Control("STATIC","",$54001106,10,30,200,100,t&,0,%hinstance,$0)
EDIT2&=Create("TEXT",ELEMENT2&,"TAB 1",10,10,100,18)
ELEMENT3&=Control("STATIC","",$54001106,10,30,200,100,t&,0,%hinstance,$0)
EDIT3&=Create("BUTTON",ELEMENT3&,"TAB 3",10,10,100,18)
Zuerst nur das erste anzeigen:
Showwindow(Element1&,1)
Showwindow(Element2&,0)
Showwindow(Element3&,0)
Shell "Avery.exe" prüft wo notepad.exe vorhanden ist.
Ergebnis in der AVREY.INI
SETFOCUS(%HWND)
WHILENOT ENDE%
WAITINPUT
If %KEY=2
ENDE%= 1
ELSEIF TABCHANGED(T&) TABCTRL
IF GetActiveTab(T&) = 0
Showwindow(Element1&,1)
Showwindow(Element2&,0)
Showwindow(Element3&,0)
ELSEIF GetActiveTab(T&) = 1
Showwindow(Element1&,0)
Showwindow(Element2&,1)
Showwindow(Element3&,0)
ELSEIF GetActiveTab(T&) = 2
Showwindow(Element1&,0)
Showwindow(Element2&,0)
Showwindow(Element3&,1)
ENDIF
ENDIF
href='./../../function-references/XProfan/Wend/'>WEND
Suchprogramm KompilierenMarqueSéparationDef Searchtreeforfile(3) !"imagehlp","SearchTreeForFile"
Def GetLogicalDrives(0) !"KERNEL32","GetLogicalDrives"
Def GetDriveType(1) !"KERNEL32","GetDriveTypeA"
Déclarer buf#, Buffer#
Faible buf#,4
Faible Buffer#,261
var f.Dossier$= "note-pad.exe" à cause de qui Suchdauer geändert
Déclarer drives&,i%,f.Racine$,f.Rück&
drives&=GetLogicalDrives()
Tandis que (i%<26)
Si Test peu(drives&,i%)
f.Racine$=Chr$((i%+65));»
String buf#,0=f.Racine$
Si GetDriveType(buf#)=3
Claire Buffer#
f.Rück& = @Searchtreeforfile(@Addr(f.Racine$), @Addr(f.Dossier$), Buffer#)
cas f.RÜck& <> 0: BREAK
EndIf
clear buf#
EndIf
Inc i%
Wend
WRITEINI $PROGDIR+"\AVERY.INI","Avery","DirPfad"=String$(Buffer#,0)
Dispose Buffer#
Dispose buf#
Fin
|
|
|
| |
|
|
|
| si pour shell qui aufrufende Anwendung verharrt, gibt Windows dem Aufrufer wohlmöglich arrêt grad aucun Priorität ou bien es meint, dass plan autre Dinge grad wichtiger sommes bzw. zunächst abgearbeitet volonté doit. tu peux pas en sortir, dass Prozesse ou bien Threads Schritt pour Schritt nebeneinander herlaufen - plutôt ist cela Gegenteil qui le cas. Einen logischen faute habe je beim Überfliegen vom Code pas erkannt, sodass je simple dire serait, qui calculateur "ackert" arrêt - besonders frisch pour dem Hochfahren - et besonders weil Dein Suchthread so entier sans WaitInput volontiers sowieso am liebsten volle charge dans Anspruch nimmt. ^ ^ (vlt. serait simple pour Tandis que (i%<26) un WaitInput 1 aider) |
|
|
| |
|
|
|
Thomas Freier | Hat alles pas viel geändert. Werde simple seulement chez besoin nachprüfen, si le erforderliche ext. Software gebraucht wird, si vous encore im einmal ermittelten Dossier vorhanden ist. |
|
|
| |
|
|