Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi If und FindWindow?? (https://www.delphipraxis.net/108042-if-und-findwindow.html)

xShadowBoZz 6. Feb 2008 20:46


If und FindWindow??
 
also hab momentan folgendes problem.
naja am besten erzaehl ich euch was ihc machen will und was ich probiert habe zu schreiben.
also als erstes setzt ich einen bestimmten button auf enabled=False (hab ich schon eingestellt)(nin diesem fall button2).
nun will ich das wenn ein bestimmtes fenster gefunden wird das der button gleich Enabled='True' ist.
hab des bei Activate eingestellt, weis aba nicht ob des dann fuer die ganze zeit gilt, wenn nich wie soll ich das machen? Also sodass das fenster auch noch gefunden werden kann nachdem ich das programm gestartet hab.

also kurz und knap:
als ersten Programm starten.
danach soll es nach einem bestimmten fenster suchen.
wenn des gefunden ist istgleich Button2.Enabled='True'.

habs schon mit folgendem versucht hat aba net geklappt.(bei einem gabs gleich eror wenn ich program starte, dann muss ich programm reset machen).

Delphi-Quellcode:
procedure TForm1.FormActivate(Sender: TObject);
var Window: Hwnd;
begin
  Window:=FindWindow(NIL,'Fenster');
If Window then
  Button2.Enabled='True'
else
  free;
end;
da kommen dann folgende Errors:

[Error] Programm.pas(132): Type of expression must be BOOLEAN
[Error] Programm.pas(133): ':=' expected but '=' found
[Error] Programm.pas(134): Incompatible types: 'Boolean' and 'String'
[Fatal Error] Project.dpr(8): Could not compile used unit 'Programm.pas'

dann habs ichs ma so versucht:
Delphi-Quellcode:
procedure TForm1.FormActivate(Sender: TObject);
var Window: Hwnd;
begin
  Window:=FindWindow(NIL,'Fenster');
If StrToBool('Window') then // hier war [Error] Programm.pas(132): Type of expression must be BOOLEAN
  Button2.Enabled:='True' // hier war [Error] Programm.pas(133): ':=' expected but '=' found
else
  free;
end;
danach kommen noch die

[Error] Programm.pas(134): Incompatible types: 'Boolean' and 'String'
[Fatal Error] Project.dpr(8): Could not compile used unit 'Programm.pas'

habs dann nochma versucht:

Delphi-Quellcode:
procedure TForm1.FormActivate(Sender: TObject);
var Window: Hwnd;
begin
  Window:=FindWindow(NIL,'Fenster');
If StrToBool('Window') then
  Button2.Enabled:=StrToBool('True') // hier StrToBool eingesetzt.
else
  free;
end;
danach kommt nur noch ein Hint is ja irgendwie logisch weil ich des Window in ('') gesetzt habe.
[Hint] Programm.pas(131): Value assigned to 'Window' never used

allerdings kommt beim direkten start diese nachricht/error:
http://hts-forum.pytalhost.com/htsfiles/DelphiError.jpg

hoffe jemand kann mir helfen.
:dp:

sirius 6. Feb 2008 20:55

Re: If und FindWindow??
 
Du musst Window auf den Wert 0 testen.

DeddyH 6. Feb 2008 20:56

Re: If und FindWindow??
 
Und so?
Delphi-Quellcode:
procedure TForm1.FormActivate(Sender: TObject);
begin
  Button2.Enabled := FindWindow(NIL,'Fenster') <> 0;
end;

SirThornberry 6. Feb 2008 21:04

Re: If und FindWindow??
 
oder window auf einen Boolean casten. Delphi ist sehr typstreng wodurch es auch für Anfänger gut geeignet ist.

xShadowBoZz 6. Feb 2008 21:14

Re: If und FindWindow??
 
ok habs jetzt mit
Delphi-Quellcode:
  Button2.Enabled := FindWindow(NIL,'Fenster') <> 0;
probiert, gibt allerdings ein problem.
der button2 wird nur aktiv wenn das programm nachdem öffnen des fensters gestartet wird, also wenn ich zuerst das programm starte und dann des fenster öffne das wird Button2 nich aktiviert.
liegt warhscheinlich das ich die procedure in OnActivate reingeschrieben habe.
gibt es irgendeine möglichkeit wo ich die eine zeile reinschreiben kann, sodass sie die ganze zeit abgefragt wird.
und nochwas wie mach ich dann wenn ich das fenster schliese das der button wieder deaktiviert wird?

sozusagen das das fenster in das programm angeheangt, eingefuegt wird kein ahnung, also auf englisch würd man sagen :
attach this window to your programm
oda so in der art.

Klaus01 7. Feb 2008 07:21

Re: If und FindWindow??
 
Zitat:

Zitat von xShadowBoZz
gibt es irgendeine möglichkeit wo ich die eine zeile reinschreiben kann, sodass sie die ganze zeit abgefragt wird.
und nochwas wie mach ich dann wenn ich das fenster schliese das der button wieder deaktiviert wird?

Guten Morgen,

Du könntest eine Art polling für das Fenster einrichten.
Das könnte mit einem TTimer oder mit Threads zu realisieren sein.

Grüße
Klaus

xShadowBoZz 7. Feb 2008 10:00

Re: If und FindWindow??
 
des mit nem timer zu machen hab ich mir auch schon überlegt, wüsste aba momentan nicht wie des aussehen sollte.

PS: kann mir auch jemand dabei helfen bei der anderen frage, worum es geht den button wieder Enabled=False zu stellen wenn das fenster geschlossen wird? oda wird des automatisch wenn ich nen timer einbaue.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:05 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz