| |
|
|
Thomas Freier | Während se el Hauptprogramm aufbaut (normal ca. 1s) y luego en el Warteschleife es, se una con Shell gestartetes Such-Programa (hier Avery.exe genannt) überprüfen, si y wo una cierto *.exe disponible es. Nach Rechnerneustart y Aufruf des Hauptprogramms verharrt lo ca. 25s y reagiert no. Eigentlich se doch el Hauptprogramm más bedienbar bleiben. Nach erneutem Start des Hauptprogramms verharrt lo sólo todavía ca. 4s. Ist el sólo en me así oder wo mache Soy un Fehler? Minibeispiel KompilierenMarcaSeparación $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 KompilierenMarcaSeparaciónDef Searchtreeforfile(3) !"imagehlp","SearchTreeForFile"
Def GetLogicalDrives(0) !"KERNEL32","GetLogicalDrives"
Def GetDriveType(1) !"KERNEL32","GetDriveTypeA"
Declarar buf#, Buffer#
Dim buf#,4
Dim Buffer#,261
var f.Expediente$= "note-pad.exe" wegen el Suchdauer geändert
Declarar drives&,i%,f.Root$,f.Rück&
drives&=GetLogicalDrives()
Mientras que (i%<26)
If TestBit(drives&,i%)
f.Root$=Chr$((i%+65));":"
String buf#,0=f.Root$
If GetDriveType(buf#)=3
Claro Buffer#
f.Rück& = @Searchtreeforfile(@Addr(f.Root$), @Addr(f.Expediente$), Buffer#)
caso f.RÜck& <> 0: BREAK
EndIf
clear buf#
EndIf
Inc i%
Wend
WRITEINI $PROGDIR+"\AVERY.INI","Avery","DirPfad"=String$(Buffer#,0)
Disponer Buffer#
Disponer buf#
End
|
|
|
| |
|
|
|
| Wenn después de shell el aufrufende Anwendung verharrt, son Windows el Aufrufer wohlmöglich sólo grad no Priorität oder lo meint, dass eben otro Dinge grad wichtiger son o. primero abgearbeitet voluntad necesario. Usted puede no su ausgehen, dass Prozesse oder Hilos Schritt para Schritt nebeneinander herlaufen - más es el Gegenteil el Fall. Einen logischen Fehler Yo beim Überfliegen vom Code no erkannt, sodass Yo simplemente sagen sería, el Rechner "ackert" sólo - besonders frisch después de el Hochfahren - y besonders porque Su Suchthread tan completamente sin WaitInput gerne sowieso al liebsten volle Last en Anspruch nimmt. ^ ^ (vlt. sería simplemente después de Mientras que (i%<26) una WaitInput 1 helfen) |
|
|
| |
|
|
|
Thomas Freier | Sombrero alles no viel geändert. Werde simplemente sólo en Bedarf nachprüfen, si la erforderliche ext. Software gebraucht se, si ellos aún en una vez ermittelten Ordner disponible es. |
|
|
| |
|
|