Autor Beitrag
Premaider
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 51



BeitragVerfasst: Mi 14.03.12 17:16 
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:
ausblenden 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 user profile iconNarses: Quote- durch Delphi-Tags ersetzt
Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Mi 14.03.2012 um 16:30
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19273
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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:
msdn.microsoft.com/e...esktop/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:
msdn.microsoft.com/e...esktop/ms633545.aspx
Premaider Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 51



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19273
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 14.03.12 18:06 
user profile iconPremaider hat folgendes geschrieben Zum zitierten Posting springen:
Habe erst von ca. 4 Wochen damit in Informatik angefangen. Sorry
Mutig dann gleich an API-Befehle zu gehen. ;-)

user profile iconPremaider hat folgendes geschrieben Zum zitierten Posting springen:
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.

Für diesen Beitrag haben gedankt: Premaider
Premaider Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 51



BeitragVerfasst: Mi 14.03.12 18:11 
Jetzt sieht es so aus
ausblenden 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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Mi 14.03.12 18:43 
ausblenden 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;

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS

Für diesen Beitrag haben gedankt: Premaider
Premaider Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 51



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Mi 14.03.12 19:01 
Stichwort GetSystemMetrics

Beispiel:

GetSystemMetrics(SM_CYMIN) = Height - ClientHeight
ausblenden Delphi-Quelltext
1:
Showmessage(IntToStr(Height - ClientHeight - GetSystemMetrics(SM_CYMIN)));					


Moderiert von user profile iconNarses: Beiträge zusammengefasst

user profile iconbummi hat folgendes geschrieben Zum zitierten Posting springen:
Stichwort GetSystemMetrics

Beispiel:

GetSystemMetrics(SM_CYMIN) = Height - ClientHeight
ausblenden Delphi-Quelltext
1:
Showmessage(IntToStr(Height - ClientHeight - GetSystemMetrics(SM_CYMIN)));					


zur 2. Frage
ausblenden Delphi-Quelltext
1:
SetWindowText(HWND,'Nase');					


Üblich ist es für jede Frage einen neuen Thread aufzumachen

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
Premaider Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 51



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: 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

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
Premaider Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 51



BeitragVerfasst: 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