![]() |
Programm führt keine Aktion aus, wenn nicht Focus
hallo
unzwar habe ich mir jetzt ein kleines tool gebaut, das alle handle einsammelt und die fenster dann alle auf einmal auf knopfdruck halbdurchsichtig machen kann. das klappt soweit auch sehr gut, nur jetzt wollte ich das ganze im hintergrund laufen lassen und einen timer einbaun, dass gleich alle neuen fenster auch halbdurchsichtig werden.. aber der timer macht irgendwie nur was, wenn die anwendung den focus hat.. also schon nichtmal wenn ich ein anderes fenster anklicke.. ich weiß jetzt nicht obs am timer oder an der maketransparent-funktion liegt.. aber ich habe überall schon lauter Application.ProcessMessages reingehaun und es klappt immer noch nicht. also ich hab im timer ein button1.Click; eingebaut.. liegt vllt daran? weiß einer von euch ne lösung oder nen andern weg? mfg timi-loader |
Re: Programm führt keine Aktion aus, wenn nicht Focus
"also ich hab im timer ein button1.Click;"
Jepp, daran könnte es liegen - wäre auch logisch, da der Klick ja nicht ausgeführt werden kann, wenn das Fenster keinen Focus hat. So programmiert man aber auch nicht!!! Code, der an mehreren Stellen ausgeführt werden soll, gehört in eine eigene Funktion/Prozedur! |
Re: Programm führt keine Aktion aus, wenn nicht Focus
kk.. habs ausgelagert.. aber es klappt immernoch nicht. selbe sache.
|
Re: Programm führt keine Aktion aus, wenn nicht Focus
Zeig mal, wie du es asugelagert hast. :)
|
Re: Programm führt keine Aktion aus, wenn nicht Focus
ganz einfach:
Delphi-Quellcode:
diese prozedur habe ich neu erstellt und da steht ja der code und die variablen drinn die zuvor hier drinn waren: jetzt steht da:
procedure TForm1.doalle;
var h: HWnd; begin h := handle; while h > 0 do begin if checkbox1.Checked=true then begin if isWindowVisible(h) then MakeTransparent(h,strtoint(edit1.text)); end else begin MakeTransparent(h,strtoint(edit1.text)); end; h := getnextwindow(h, GW_HWNDNEXT); end; end;
Delphi-Quellcode:
und beim timer:
procedure TForm1.Button1Click(Sender: TObject);
begin doalle; end;
Delphi-Quellcode:
..wahnsinnig schwer ausgelagert ^^
procedure TForm1.Timer1Timer(Sender: TObject);
begin doalle; application.ProcessMessages; end; mfg |
Re: Programm führt keine Aktion aus, wenn nicht Focus
Hi,
ich glaube eher es war gemeint, das du den Code auslagerst und ihn dann auch aus deinem OnTimer aufrufst - und nicht dort Button.Click machst und in der ButtonClick-Methode die Funktion aufrufst? Dann sollte es nämlich gehen... MfG Benedikt |
Re: Programm führt keine Aktion aus, wenn nicht Focus
|
Re: Programm führt keine Aktion aus, wenn nicht Focus
also das mit dem h habe ich mir hier rausgesucht von andern codes.. und es klappt ja auch prima.. also der code geht ja ansich.. nur nichtmehr wenn das fenster nciht mehr ganz vorn und aktiv ist..
und natürlich habe ich auch beim timer das doalle; drinn mfg |
Re: Programm führt keine Aktion aus, wenn nicht Focus
Du sollst im Timer DoAlle aufrufen, nicht Button1.Click;
Außerdem: Gib deiner Procedure bitte entweder einen rein deutschen oder englischen Namen, das verwirrt weniger ;) |
Re: Programm führt keine Aktion aus, wenn nicht Focus
noch einer ne weitere idee?
(*push*) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz