Autor Beitrag
carsten
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mi 14.05.03 13:41 
Hi
ich habe folgendes grundsätzliches Problem:
Damit ich meine Maustasten auch in Spielen nehmen kann, hab ich mir ein Programm geschrieben, dass die Registryeinträge der Logitech Mouseware ändert. Um die Änderungen zu aktivieren muss ich die Mouseware beenden und dann wieder neu starten (das klappt auch ganz gut). Allerdings bleibt nach dem Schliessen der Mouseware das Icon im Tray zurück und verschwindet erst wenn man mit der Maus darüber fährt.

Meine Frage ist nun, wie kann ich die TNA mit Delphi aktualisieren, dass das Mausicon sofort verschwindet.

carsten
BungeeBug
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 901



BeitragVerfasst: Mi 14.05.03 13:47 
Einmal F5 ... anders wärs ja nur umständlich
z.B.: Erst nen Progie Starten ...

oder wenn dus unbedingt mit nem Proggie machen willst dann würd ich vorschlagen Maus position "speichern", Bildschirmauflösung herausfinden , Maus übers SysTray laufen lassen und die Maus wieder zurück.

Aber wiegesagt das ist UMSTÄNDLICH :)

MfG BungeeBug
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 14.05.03 13:53 
Wie beendest du die Mouseware? Ich nehme mal an, dass die Mouseware das icon im WM_CLOSE-zewig der Fensterprozedur entfernt. Wenn du jetzt mit TerminateProcess die Anwendung abschießt, bekommt die Mouseware kein WM_CLOSE und das Icon wird nicht entfernt.
Es leigt also nicht am Programm oder an Windows, sondern an dir, wie du mit der Anwendung umspringst.
carsten Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mi 14.05.03 16:19 
Hi
ich verwende terminateprocess um die mouseware zu beenden.
Wenn es aber eine bessere Möglichkeit gibt, wäre ich dafür dankbar. Allerdings läuft die Mouseware als Prozess von dem ich nur den Namen weis.
thebe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 128

WinXP Home
D6 Enterprise
BeitragVerfasst: Mi 14.05.03 17:24 
TerminateProcess zerschießt den Prozess auf rabiate Weise, das Programm kann dann nicht mehr reagieren und das Icon ausser Taskleiste holen. Wie wärs wenn du nen WM_CLOSE an das Fenster schickst ?
carsten Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mi 14.05.03 17:52 
also ich habs mal so versucht

ausblenden Quelltext
1:
sendmessage(openprocess(PROCESS_TERMINATE,true,getprocessid),WM_close,0,0);					


geht aber leider nicht
BungeeBug
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 901



BeitragVerfasst: Mi 14.05.03 17:59 
Ich hab das noch nie ausprobiert ... aber wie weis das Programm welche ID es killen soll? ... das geht aus dem Code nicht hervor ....


MfG BungeeBug
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 14.05.03 18:04 
Das kann nicht gehen. OpenProcess liefert dir einen Handle auf einen Prozess. Du brauchst aber für SendMessage und WM_CLOSE eine Fenster-Handle.
carsten Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mi 14.05.03 18:13 
und wie bekomme ich dann das Handle des Fensters wenn ich blos den Namen des prozesses kenne (EM_EXEC.EXE).