Entwickler-Ecke
Windows API - Findwindow - Fenstername=Edit1.text ?
Premaider - Mi 14.03.12 17:16
Titel: Findwindow - Fenstername=Edit1.text ?
Hey Leute. Ich möchte in Edit1 einen Namen eingeben und ein Fenster mit dem selben Namen in 1280x720 Pixel setzen.
Wie geht das ? Bei mir kommt nix sauberes raus. Nur das:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| procedure TForm1.Button1Click(Sender: TObject); begin HWND (FindWindow(Edit1.Text)); SetWindowPos(HWND,HWND_TOPMOST,1280,720,0,0,SWP_NOMOVE); end;
end. |
Moderiert von
Narses: Quote- durch Delphi-Tags ersetztModeriert von
Narses: Topic aus Sonstiges (Delphi) verschoben am Mi 14.03.2012 um 16:30
jaenicke - Mi 14.03.12 17:32
Da fehlen aber noch ein paar absolute Grundlagen... :gruebel:
Du rufst eine Funktion (FindWindow) auf, castest den Rückgabewert auf den Typ HWND, wirfst den Rückgabewert aber weg. :gruebel:
Zudem hat FindWindow zwei Parameter:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms633499.aspx
Dann rufst du SetWindowPos auf, übergibst HWND (einen Variablentyp :gruebel:) als Fensterhandle, übergibst 1280 und 720 als Position, gibst aber dann im Flag mit SWP_NOMOVE an, dass die Position nicht verändert werden soll. :gruebel:
Auch da sind dir die Parameter offenbar nicht wirklich klar:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms633545.aspx
Premaider - Mi 14.03.12 17:34
Habe erst von ca. 4 Wochen damit in Informatik angefangen. Sorry
Nur was soll denn bei lpClassName hin ? Ich bekomme vom Edit doch nur den Fensternamen.
Und beim SetWindowPos hab ich was übersehen ;D
jaenicke - Mi 14.03.12 18:06
Premaider hat folgendes geschrieben : |
Habe erst von ca. 4 Wochen damit in Informatik angefangen. Sorry |
Mutig dann gleich an API-Befehle zu gehen. ;-)
Premaider hat folgendes geschrieben : |
Nur was soll denn bei lpClassName hin ? Ich bekomme vom Edit doch nur den Fensternamen. |
nil kannst du nehmen (also gar nichts), da du ihn nicht kennst. ;-)
Oder du machst ein zweites Editfeld für den Klassennamen.
Premaider - Mi 14.03.12 18:11
Jetzt sieht es so aus
Delphi-Quelltext
1: 2: 3:
| HWND (FindWindow(nil, Edit1.Text)); SetWindowPos(HWND,HWND_TOPMOST,0,0,1280,720,SWP_NOMOVE); end; |
Und dann kommen diese Fehler:
Delphi-Quelltext
1: 2: 3: 4:
| [Fehler] Unit1.pas(34): Inkompatible Typen: 'TCaption' und 'PAnsiChar' [Fehler] Unit1.pas(35): '(' erwartet, aber ',' gefunden [Fehler] Unit1.pas(35): Anweisung erforderlich, aber Ausdruck vom Typ 'Integer' gefunden [Fataler Fehler] Project1.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden |
bummi - Mi 14.03.12 18:43
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| var HWND:THandle; begin HWND := FindWindow(nil, PChar(Edit1.Text)); SetWindowPos(HWND,HWND_TOPMOST,0,0,1280,720,SWP_NOMOVE); end; |
Premaider - Mi 14.03.12 18:47
Jetzt noch ein Problem.
Delphi rechnet die Ränder hinzu. Wenn ich jetzt mit Fraps aufnehme hat das Video nur 1264x682 Pixel. Man könnte jetzt natürlich einfach die Differenz dazuzählen. Aber es soll ja auch auf XP und Vista funzen, aber da sind die Ränder anders groß :(
€: Kann man theoretisch auch den Fensternahmen eines externen Programmes ändern ? Also z.b. von Minecraft zu Blockspiel ? :D
bummi - Mi 14.03.12 19:01
Stichwort GetSystemMetrics
Beispiel:
GetSystemMetrics(SM_CYMIN) = Height - ClientHeight
Delphi-Quelltext
1:
| Showmessage(IntToStr(Height - ClientHeight - GetSystemMetrics(SM_CYMIN))); |
Moderiert von
Narses: Beiträge zusammengefasst bummi hat folgendes geschrieben : |
Stichwort GetSystemMetrics
Beispiel:
GetSystemMetrics(SM_CYMIN) = Height - ClientHeight
Delphi-Quelltext 1:
| Showmessage(IntToStr(Height - ClientHeight - GetSystemMetrics(SM_CYMIN))); | |
zur 2. Frage
Delphi-Quelltext
1:
| SetWindowText(HWND,'Nase'); |
Üblich ist es für jede Frage einen neuen Thread aufzumachen
Premaider - Mi 14.03.12 19:11
Oh sorry, wusste ich nicht ;D
Showmessage(IntToStr(Height - ClientHeight - GetSystemMetrics(SM_CYMIN)));
Showmessage ? Ich will doch garnicht das da eine Message erscheint Oo
€: Funktioniert auch nicht, mit oder ohne Showmessage
bummi - Mi 14.03.12 19:27
ist nur ein Beispiel ... GetSystemMetrics(SM_CYMIN) müsstet Du auf die Höhe des gewünschten Clientbereichs aufschlagen ..
GetSystemMetrics bei Google eingeben der erste msdn - Link erklärt was wofür verwendbar ist
Premaider - Mi 14.03.12 19:37
Also müsste ich
GetSystemMetrics(SM_CYMIN);
und das dann noch von der gewünschten Höhe und Breite abziehen. Nur wie ? Sorry kenn mich kaum aus :S
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!