1Danke
ERLEDIGT
JA
JA
ANTWORTEN
4
4
ZUGRIFFE
1359
1359
EMPFEHLEN
-
25.01.12 09:06 #1
Mitglied Platin
- Registriert seit
- Aug 2006
- Beiträge
- 509
Hallo Leute,
Wir haben eine Überprüfung gemacht, ob ein Dokument offen ist, indem wir per getWindowTitle überprüfen, ob der Name des Dokuments in einem Fenster vorkommt.
Dies klappt soweit auf allen Plattformen recht gut, nur gibt es das Problem, dass es zwei Fenster gibt, welche den Namen ebenfalls enthalten können. Daher solange eines davon offen ist, denkt die Logik, dass Dokument sei offen.
Ich habe nun per ClassName versucht über die entsprechenden HWNDs diese beiden Fenster auszuschliessen, doch dort bekomme ich, auch wenn ich das DLL kompiliere, immer nur den Rückgabewert "ThunderRT6FormDC"
Was ich ebenfalls versucht habe, ist per GetWindowThreadProcessId die ProcessID und dann den Namen des Prozesses herauszufinden, doch irgendwie scheint's keine API zu geben, welche den ProcNamen ausgibt.
Hat da jemand eine Idee, wie man das am einfachsten lösen könnnte?
Vielen Dank im Voraus.
Müller Matthias
-
25.01.12 13:17 #2
Mitglied Brillant
- Registriert seit
- Jul 2008
- Ort
- Hinter dem Mond gleich links
- Beiträge
- 900
Werden diese zwei anderen Fenster aus demselben Programm heraus aufgerufen oder kommen die von einem externen Programm?
Zwei Dinge sind unendlich: Die menschliche Dummheit und das Universum, nur bei letzterem bin ich mir noch nicht sicher. - Albert Einstein
Code vb:1
If Beitrag.Hilfreich=True Then Bewertung.Send("Positiv")
-
25.01.12 14:01 #3
Mitglied Platin
- Registriert seit
- Aug 2006
- Beiträge
- 509
Falscher Thread gepostet...
Die werden von einem externen Aufgerufen. Daher muss ich ja über die Prozeduren gehen.
-
25.01.12 14:30 #4
Mitglied Brillant
- Registriert seit
- Jul 2008
- Ort
- Hinter dem Mond gleich links
- Beiträge
- 900
Doc, wenn die zwei Fenster von einem externen Programm aufgerufen werden, haben die einen eigenen Prozess und somit auch eine eigene ProzessID.
Vergleich doch einfach die ProcessID deines eigenen Programms mit dem der zwei Fenster!Zwei Dinge sind unendlich: Die menschliche Dummheit und das Universum, nur bei letzterem bin ich mir noch nicht sicher. - Albert Einstein
Code vb:1
If Beitrag.Hilfreich=True Then Bewertung.Send("Positiv")
-
25.01.12 15:23 #5
Mitglied Platin
- Registriert seit
- Aug 2006
- Beiträge
- 509
Jo klar, es ist so simpel.
Falls wer was ähnliches hat, hier die Anleitung:
ProcessID des Hauptprogramms rausfinden:
Code vb:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
Public Function getProcessID(ProgrammName) As Long Dim hSnapshot As Long, Result As Long Dim Process As PROCESSENTRY32 ' "Snapshot" des aktuellen Prozess ermitteln hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0&) If hSnapshot <> 0 Then Process.dwSize = Len(Process) ' Ersten Prozess ermitteln Result = ProcessFirst(hSnapshot, Process) Do Until Result = 0 If InStr(LCase$(Process.szExeFile), LCase$(ProgrammName)) > 0 Then getProcessID = Process.th32ProcessID Exit Do End If ' nächster Prozess Result = ProcessNext(hSnapshot, Process) Loop ' Handle schliessen CloseHandle hSnapshot End If End Function
Danach über EnumWindows etc. die entsprechenden HWNDs auslesen.
Mit dieser Hwnd die ProcID auslesen über
Code vb:1
Call GetWindowThreadProcessId(thisHWND, thisProcID)
Und danach müssen diese nur noch gegengeprüft werden.
Danke an Zvoni, evtl. kann das jemand auch noch gebrauchen.
Ähnliche Themen
-
IP ermitteln
Von xollo im Forum Security (Viren, Trojaner, Spam)Antworten: 6Letzter Beitrag: 21.07.11, 12:24 -
Typ ermitteln
Von flashray im Forum JavaAntworten: 4Letzter Beitrag: 12.11.07, 16:40 -
ID ermitteln
Von Bencher im Forum Relationale DatenbanksystemeAntworten: 2Letzter Beitrag: 22.06.06, 10:26 -
URL ermitteln... nur Wie ?
Von Sealtuagn im Forum PHPAntworten: 6Letzter Beitrag: 06.07.05, 13:23 -
Fenstername über window.opener
Von Deemax im Forum Javascript & AjaxAntworten: 11Letzter Beitrag: 13.05.04, 13:01




Zitieren
Login