Allgemeine Fragen zur PROFAN Programmierung

Views (Heute): 249107 (10543)

| Suchen
| Zurück zur Übersicht

Autor | Thema: Programme im Hintergrund
Gerold Flaig
| Datum:04.03.02 01:02 (geroldflaig@gmx.de) |
Hallo, ich weiss die Frage gab es schon oefter, aber ich finde trotzdem keine Loesung..wie kann ich feststellen ob ein Programm, das im Hintergrund laeuft (kein fenster) noch da ist,bzw eberhaupt da ist.? .ich weiss den Namen der exe sonst nichts.. Es waere schoen wenn jemand helfen koennte danke.. Gerold
Walter
| Datum:15.03.02 10:56 (risikowks@web.de) |
Am einfachsten kannst du natürlich auf Windows Task (ctrl_alt-del) zurückgreifen und sehen ob dein Task erscheint.
Stefan Schnell
| Datum:15.03.02 22:06 (mail@stschnell.de) |
Hallo Gerold, eine ausführliche Beschreibung, zur Lösung Deines Problems, findest Du in der neusten "Visual BASIC praxis", Ausgabe 01.2002, Seite 737 bis 740, Titel: "Desktop Fenster analysieren". Die dort beschriebene Methode geht mit Win-API wie folgt vor: GetDesktopWindow GetWindow GetWindowText SearchWindow FindWindow ShowWindowInfos (GetWindowRect) GetWindowModuleFileName (ab Win 98) Hoffe das dies ein Lichtblick für Dich ist. Tschüss Stefan Schnell
Stefan Schnell
| Datum:17.03.02 23:43 (mail@stschnell.de) |
Hallo Gerold, der Ansatz aus dem o. g. Magazin ist sehr universell und baut vollständig auf das WinAPI auf, dies ist sehr umständlich. Einen kürzeren Weg könnte diese Lösung darstellen: Def @GetWindowModuleFileName(3) !"USER32", "GetWindowModuleFileNameA" Declare hWind% Declare FName# Dim FName#, 256 ClearList AddWindows "" WhileLoop %Getcount hWind% = @FindWindow(@ListBoxItem$(&loop)) @GetWindowModuleFileName(hWind%, FName#, 256) Print @String$(FName#, 1) 'oder 0 EndWhile Dispose FName# WaitKey End Leider konnte ich sie nicht testen, da sie erst ab Win98 läuft. Die Funktion GetWindowModuleFilename gibt es erst ab Win98. Auch wenn AddWindows nur die Fenster mit einem Titel ermittelt, so erscheinen bei mir in der Liste auch die versteckten Fenster (habe dies mit einem Taskmanager (FTask), der auch die versteckten Tasks anzeigt ausprobiert). Vielleicht hilft Dir dieser Ansatz weiter und löst Dein Problem. Tschüss Stefan Schnell
Gerold Flaig
| Datum:18.03.02 15:16 (geroldflaig@gmx.de) |
Hallo, entschuldigt die spaete reaktion. Bin derzeit in USA und hab nicht immer die Moeglichkeit zum lesen und antworten. Vielen Dank fuer die antworten. Ich werde es gleich testen.. Gerold
Stefan Schnell
| Datum:18.03.02 16:43 (mail@stschnell.de) |
Hallo Gerold, hier ein Auszug aus: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/windows_6ap1.asp Platform SDK: Windows User Interface GetWindowModuleFileName The GetWindowModuleFileName function retrieves the full path and file name of the module associated with the specified window handle. UINT GetWindowModuleFileName( HWND hwnd, // handle to window LPTSTR lpszFileName, // file name buffer UINT cchFileNameMax // max size of file name buffer ); Parameters hwnd [in] Handle to the window whose module file name will be retrieved. lpszFileName [out] Pointer to a buffer that receives the path and file name. cchFileNameMax [in] Specifies the maximum number of TCHARs that can be copied into the lpszFileName buffer. Return Values The return value is the total number of TCHARs copied into the buffer. Remarks Windows 98/Me: GetWindowModuleFileNameW is supported by the Microsoft Layer for Unicode. To use this, you must add certain files to your application, as outlined in Microsoft Layer for Unicode on Windows 95/98/Me Systems. Requirements Windows NT/2000/XP: Included in Windows NT 4.0 SP3 and later. Windows 95/98/Me: Included in Windows 98 and later. Header: Declared in Winuser.h; include Windows.h. Library: Use User32.lib. Unicode: Implemented as Unicode and ANSI versions on Windows NT/2000/XP. Also supported by Microsoft Layer for Unicode. D. h. die Funktion wird tatsächlich so verwendet wie angenommen. Die Ausgabe muss Print @String$(FName#, 0) heißen, habe sie mit GetWindowText ausprobiert (macht zwar keinen grossen Sinn, aber für die Funktionsweise ist es okay). Tschüss Stefan Schnell
Gerold Flaig
| Datum:18.03.02 16:44 (geroldflaig@gmx.de) |
Hallo ich habe es mal getestet. Es funktioniert gut, nur ist esnicht ganz was ich suche..ich habe einen (oder mehrere) Programme im Hintergrund. Diese Programme laufen nur im Hintergrund und haben keine Eingabeoberflaeche. Aber ich weiss den namen der Programme.. Ich habe nu noch eine andere Frage: Ich habe neuerdings konstanten eingebaut, funktioniert auch im Interpretermodus. NUr nachdem kompilieren werden sie nicht erkannt bzw eingebaut. Ich habe sie mit def angelegt z.B. def &ModName 1 Ich arbeite mit Profan 7 Vielen dank fuer die Hilfe.. Gerold
Stefan Schnell
| Datum: 18.03.02 21:14 (mail@stschnell.de) |
Hallo Gerold, der nächste Step wäre dann der Test auf geladene Module. Habe mir mal eine AnalyseTool angeschaut, dies setzt hauptsächlich auf TOOLHELP.DLL auf, TOOLHELP - Debug/Tool Helper library. Dies ist eine 16bit Lib (man höre und staune) sowohl unter Win95 OSR2 als auch Win98. Wie dem auch sei, TOOLHELP ist nicht im WinAPI dokumentiert, es lässt sich nur lapidar darüber aus: Tool help functions make it easier for developers to obtain information about currently executing Microsoft® Win32®-based applications. These functions are designed to streamline the creation of Win32-hosted tools, specifically Windows-based debugging applications. Das war es, die Lib beinhaltet folgende Funktionen: LOCAL32INFO GLOBALENTRYMODULE MEMORYREAD GLOBALNEXT LOCAL32NEXT TASKFINDHANDLE INTERRUPTREGISTER MODULEFINDHANDLE TIMERCOUNT GLOBALFIRST STACKTRACENEXT MEMMANINFO STACKTRACEFIRST GLOBALINFO TASKGETCSIP TASKSETCSIP MODULEFIRST SYSTEMHEAPINFO MODULENEXT NOTIFYREGISTER LOCAL32FIRST STACKTRACECSIPFIRST GLOBALENTRYHANDLE TASKSWITCH LOCALINFO LOCALFIRST CLASSNEXT NOTIFYUNREGISTER MEMORYWRITE TASKFIRST TERMINATEAPP INTERRUPTUNREGISTER TASKNEXT MODULEFINDNAME CLASSFIRST GLOBALHANDLETOSEL LOCALNEXT Eingehendere Kenntnisse zu diesem Thema habe ich nicht. Viel Erfolg bei der Lösung Deines Problems, tschüss Stefan Schnell

| Zurück zur Übersicht