Deutsch
Forum

Suchprogramm und Shell

 

Thomas
Freier
Während sich das Hauptprogramm aufbaut (normal ca. 1s) und dann in der Warteschleife ist, soll ein mit Shell gestartetes Such-Programm (hier Avery.exe genannt) überprüfen, ob und wo eine bestimmte *.exe vorhanden ist.
Nach Rechnerneustart und Aufruf des Hauptprogramms verharrt es ca. 25s und reagiert nicht.
Eigentlich soll doch das Hauptprogramm weiter bedienbar bleiben.
Nach erneutem Start des Hauptprogramms verharrt es nur noch ca. 4s.
Ist das nur bei mir so oder wo mache ich einen Fehler?
Minibeispiel
KompilierenMarkierenSeparieren
 $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

WEND


Suchprogramm
KompilierenMarkierenSeparieren
Def Searchtreeforfile(3) !"imagehlp","SearchTreeForFile"
Def GetLogicalDrives(0) !"KERNEL32","GetLogicalDrives"
Def GetDriveType(1) !"KERNEL32","GetDriveTypeA"
Declare buf#, Buffer#
Dim buf#,4
Dim Buffer#,261
var f.Datei$=  "note-pad.exe" wegen der Suchdauer geändert
Declare drives&,i%,f.Root$,f.Rück&
drives&=GetLogicalDrives()

While (i%<26)

    If TestBit(drives&,i%)

        f.Root$=Chr$((i%+65));":"
        String buf#,0=f.Root$

        If GetDriveType(buf#)=3

            Clear Buffer#
            f.Rück& = @Searchtreeforfile(@Addr(f.Root$), @Addr(f.Datei$), Buffer#)
            case 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#
End
 
Gruß Thomas
Windows XP SP2, XProfan X2
09.04.2010  
 



Wenn nach shell die aufrufende Anwendung verharrt, gibt Windows dem Aufrufer wohlmöglich halt grad keine Priorität oder es meint, dass eben andere Dinge grad wichtiger sind bzw. zunächst abgearbeitet werden müssen. Du kannst nicht davon ausgehen, dass Prozesse oder Threads Schritt für Schritt nebeneinander herlaufen - eher ist das Gegenteil der Fall. Einen logischen Fehler habe ich beim Überfliegen vom Code nicht erkannt, sodass ich einfach sagen würde, der Rechner "ackert" halt - besonders frisch nach dem Hochfahren - und besonders weil Dein Suchthread so ganz ohne WaitInput gerne sowieso am liebsten volle Last in Anspruch nimmt. ^^ (vlt. würde einfach nach While (i%<26) ein WaitInput 1 helfen)
 
09.04.2010  
 




Thomas
Freier
Hat alles nicht viel geändert. Werde einfach nur bei Bedarf nachprüfen, wenn die erforderliche ext. Software gebraucht wird, ob sie noch im einmal ermittelten Ordner vorhanden ist.
 
Gruß Thomas
Windows XP SP2, XProfan X2
11.04.2010  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

1.572 Betrachtungen

Unbenanntvor 0 min.
Walter30.01.2018
GC5704.08.2016
Detlef Jagolski18.01.2011

Themeninformationen

Dieses Thema hat 2 Teilnehmer:

Thomas Freier (2x)
iF (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie