Autor Beitrag
Blafasel
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Do 23.06.05 15:48 
Mahlzeit.

Weiter unten steht ein Thread von mir der sich damit beschäftigt Fehlerpopups von einer kritischen (und verbuggten) Software zu finden und - zu schliessen. Das Finden klappt inzwischen, dank der Hilfe hier im Forum.

Nun ende ich mit einem Window-Handle und krieg einfach das Fenster nicht geschlossen.. Was ich bisher mache:

3 verschiedene Hacks das Fenster definitiv in den Vordergrund & aktiv zu bekommen
Sendkey VK_ENTER (Es gibt immer nur einen Button mit "OK" und der ist Default)

und

PostMessage:
- WM_CLOSE
- WM_SYSCOMMAND/SC_CLOSE
- WM_DESTROY
- WM_NCDESTROY

und

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
GetWindowThreadProcessId(hDialog, @iProcessId);
hProcess := OpenProcess(PROCESS_ALL_ACCESS, TRUE, iProcessId);
try
  GetExitCodeProcess(hProcess, iExitCode);
  TerminateProcess(hProcess, iExitCode);
finally
  CloseHandle(hProcess);
end;


Wie man sieht bin ich ziemlich verzweifelt, und das Fenster lacht sich ins Fäustchen. Beide Prozesse (mein Service der eben diese Dinge dort oben macht und der Papa des Popups) sind als Lokales System gestartet. Wie in meinem anderen Thread zu sehen ist, sind die Popups meistens auf dem WinLogon Desktop (als neben dem "Ctrl+Alt+Del to log on" Screen).

Was mache ich falsch? Was kann ich überhaupt noch weiteres versuchen?
Danke für jede Hilfe,
Ben

Moderiert von user profile iconraziel: BBCodes aktiviert.
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Do 23.06.05 15:58 
so kriegst du die prozessid: GetWindowThreadProcessId(Hnd, @PID);
kannst dann mit Suche in: Delphi-Forum, Delphi-Library KILLPROCESS abschiessen

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
Blafasel Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Do 23.06.05 16:32 
Mahlzeit.

user profile iconretnyg hat folgendes geschrieben:
so kriegst du die prozessid: GetWindowThreadProcessId(Hnd, @PID);


Ähm, ja.. Das mache ich doch in dem Code oben?

user profile iconretnyg hat folgendes geschrieben:
kannst dann mit Suche in: Delphi-Forum, Delphi-Library KILLPROCESS abschiessen


Wenn ich die Suchergebnisse anschaue, dann machen die das gleiche was ich auch versuche..?
No offense, aber das sieht irgendwie nach - doppelt aus?

Ben
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Do 23.06.05 17:00 
vielleicht solltest du dir erst mit Suche in: Delphi-Forum, Delphi-Library GETDEBUGPRIVILEGE debug - privilegien holen...
und verwende mal meine killprocess funktion, ist bei dem Suche in: Delphi-Forum, Delphi-Library PSVIEW thread mehrfach zu kopieren

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
Blafasel Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Do 23.06.05 17:42 
Danke für deine Zeit/Hilfe.

user profile iconretnyg hat folgendes geschrieben:
vielleicht solltest du dir erst mit Suche in: Delphi-Forum, Delphi-Library GETDEBUGPRIVILEGE debug - privilegien holen...


Das wird wohl nichts.. Delphi 5 hier.. Erstens gibt es bei mir keinen PPointer (Gut, den kann ich vermutlich als ^Pointer selber deklarieren), danach gibt es im Assember-Teil das Problem "Undeclared identifier DB".. Ganz davon abgesehen, dass ich Strings wie
ausblenden Quelltext
1:
2:
@muell:
  DB $0F DB $80

bedenklich finde, was die Namensgebung angeht..
Nun ja - habe gerade doch noch eine andere Möglichkeit gefunden, an das Debug-Recht zu kommen.. Wird auch getestet.

user profile iconretnyg hat folgendes geschrieben:
und verwende mal meine killprocess funktion, ist bei dem Suche in: Delphi-Forum, Delphi-Library PSVIEW thread mehrfach zu kopieren

Hab ich gerade verglichen. Der Unterschied ist ja nur in den Privilegien und dem Inherit-Flag bei OpenProcess zu sehen. Die Privilegien habe ich nun auf (PROCESS_TERMINATE or PROCESS_QUERY_INFORMATION) reduziert und werd es damit mal testen. Danke.
Blafasel Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Do 23.06.05 18:22 
Gerade getestet. Sowohl die explizite Angabe der Privilegien als auch das Debug-Privileg helfen nicht weiter - der Process ist einfach nicht tot zu kriegen.. Mache ich da etwas falsch?
Blafasel Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Do 23.06.05 20:55 
Vorsichtig gefragt, weil mein erstes Googlen nicht sehr vielversprechend war: Liesse sich ggf. auch mit einem systemweiten Hook (z.B. bei jedem neuen Fenster?) ein ungewünschter Dialog abfangen? Performance-Probleme wären mir gerade mehr als egal.. *auf die Uhr schau*
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Do 23.06.05 21:12 
TerminateProcess mal ausprobiert ?
Blafasel Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Do 23.06.05 21:14 
user profile iconF34r0fTh3D4rk hat folgendes geschrieben:
TerminateProcess mal ausprobiert ?


Sei mir nicht bös: Ja.. Steht 3-4 Beiträge weiter oben.. *sigh* Wird wohl ne lange Nacht heute..


Zuletzt bearbeitet von Blafasel am Do 23.06.05 21:16, insgesamt 1-mal bearbeitet
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Do 23.06.05 21:15 
ach ja stimmt, sry :D
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 23.06.05 21:52 
Gehört der Prozess auch dir? Sprich läuft er unter deinem Benutzeraccount?
Blafasel Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Do 23.06.05 22:46 
Jein..

Nein, ausser man zählt "beide Programme laufen als Service, "Local System", als ein Ja..