Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Wie komme ich an das RECT für SystemParametersInfo (https://www.delphipraxis.net/19722-wie-komme-ich-das-rect-fuer-systemparametersinfo.html)

Akut-Programming 7. Apr 2004 18:51


Wie komme ich an das RECT für SystemParametersInfo
 
Ich wollte mal die Arbeitsfläche von Windows anpassen, sodas alle anderen Anwendungen sozusagen an meins "andocken" beim maximieren.. dazu hatte ich in der Windows SDK die Funktion SystemParametersInfo gefunden, mit der dieß möglich ist. Nur leider fehlt mir hierzu das verlangte RECT..!????
Code:
SPI_SETWORKAREA   The pvParam parameter must point to the RECT structure that contains the coordinates of the work area.

Luckie 7. Apr 2004 19:53

Re: Wie komme ich an das RECT für SystemParametersInfo
 
In dem du es angibst?
Delphi-Quellcode:
var
  rect: Trect;
begin
  rect.Left := 100;
  rect.Top := 100;
  rect.Right := 200;
  rect.Bottom := 200;

Akut-Programming 7. Apr 2004 20:42

Re: Wie komme ich an das RECT für SystemParametersInfo
 
dank dir!!

Akut-Programming 8. Apr 2004 15:55

Re: Wie komme ich an das RECT für SystemParametersInfo
 
warum funztn das nicht???
Delphi-Quellcode:
SystemParametersInfo(SPI_SETWORKAREA,Screen.Height - Form1.Constraints.MaxHeight,rect,SPIF_UPDATEINIFILE);
Ich bekomm dir Meldung:
Code:
Inkompatible Typen: 'TRect' und 'TPointer'
In der SDK Hilfe steht aber..
Code:
pvParam

Depends on the system parameter being queried or set. For more information about systemwide parameters, see the uiAction parameter. If not otherwise indicated, specify NULL

The pvParam parameter must point to the RECT structure that contains the coordinates of the work area.
Hab das Rect Struct eingebaut wie oben geschrieben.. :gruebel:

dizzy 8. Apr 2004 16:14

Re: Wie komme ich an das RECT für SystemParametersInfo
 
Zitat:

Zitat von Akut-Programming
In der SDK Hilfe steht aber..
Code:
[...] The pvParam parameter must [b]!!! point !!![/b] to the RECT structure [...]

Also mit:
Code:
rect^
übergeben, oder gleich PRect verwenden.


gruss,
dizzy

Akut-Programming 9. Apr 2004 21:52

Re: Wie komme ich an das RECT für SystemParametersInfo
 
:wall: hmm jetzt bekomm ich aber ne Zugirffsverletzung..
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  rect: PRect;
begin
  rect.Left := 100;
  rect.Top := 100;
  rect.Right := 200;
  rect.Bottom := 200;
  Form1.Constraints.MaxHeight := 30;
  Form1.Constraints.MinHeight := 30;
  Form1.Constraints.MinWidth := Screen.Width;
  //SystemParametersInfoA();
  //SystemParametersInfoW();
  SystemParametersInfo(SPI_SETWORKAREA,Screen.Height - Form1.Constraints.MaxHeight,rect,SPIF_UPDATEINIFILE);
end;

mirage228 9. Apr 2004 22:03

Re: Wie komme ich an das RECT für SystemParametersInfo
 
Hi!

Mach es so:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  rect: PRect;
begin
  rect^.Left := 100;
  rect^.Top := 100;
  rect^.Right := 200;
  rect^.Bottom := 200;
  Form1.Constraints.MaxHeight := 30;
  Form1.Constraints.MinHeight := 30;
  Form1.Constraints.MinWidth := Screen.Width;
  //SystemParametersInfoA();
  //SystemParametersInfoW();
  SystemParametersInfo(SPI_SETWORKAREA, Screen.Height - Form1.Constraints.MaxHeight, rect, SPIF_UPDATEINIFILE);
end;
oder so:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  rect: TRect;
begin
  rect.Left := 100;
  rect.Top := 100;
  rect.Right := 200;
  rect.Bottom := 200;
  Form1.Constraints.MaxHeight := 30;
  Form1.Constraints.MinHeight := 30;
  Form1.Constraints.MinWidth := Screen.Width;
  //SystemParametersInfoA();
  //SystemParametersInfoW();
  SystemParametersInfo(SPI_SETWORKAREA, Screen.Height - Form1.Constraints.MaxHeight, @rect, SPIF_UPDATEINIFILE);
end;
Sollte funktionieren (hoffe ich zumindest mal :mrgreen:)

mfG
mirage228

w3seek 9. Apr 2004 22:09

Re: Wie komme ich an das RECT für SystemParametersInfo
 
Zitat:

Zitat von mirage228
Hi!

Mach es so:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  rect: PRect;
begin
  rect^.Left := 100;
...

das faellt schon fast unter grob fahrlaessiger koerperverletzung :shock:

mirage228 9. Apr 2004 22:10

Re: Wie komme ich an das RECT für SystemParametersInfo
 
Zitat:

Zitat von w3seek
Zitat:

Zitat von mirage228
Hi!

Mach es so:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  rect: PRect;
begin
  rect^.Left := 100;
...

das faellt schon fast unter grob fahrlaessiger koerperverletzung :shock:

Argh, ja du hast recht! :wall:

Das geht nicht und wird in einer AV enden, nimm lieber die andere Variante!

Ist wohl schon zu spät ...

mfG
mirage228

Akut-Programming 13. Apr 2004 20:51

Re: Wie komme ich an das RECT für SystemParametersInfo
 
Hi Leute!!

Ich hab da mal wieder n Problem... unzwar will ich n Tool so in der Art von ner Toolbar schreiben. Die Funktion wie man die Arbeitsfläche von Windows vergibt hab ich ja schon in der Windows SDK gefunden. Es funktioniert nur nicht so wie ich es mir vorstelle..die Anwendungen sollen an meiner "andocken" wenn sie maximiert werden. Nur bei mir ist es so, das wenn ich die Arbeitsfläche mit meinem Code verkleinere, meine Anwendung dann auch an ner anderen Position angezeigt wird.

Meine Frage nun.. wie muss ich meinen Code umstellen, damit meine Anwendung auf der Taskleiste anliegt, aber alle anderen Anwendungen an meiner dann andocken, wenn sie maximiert werden!?

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  rect: TRect;
begin
  Form1.Constraints.MaxHeight := 30;
  Form1.Constraints.MinHeight := 30;
  Form1.Constraints.MinWidth := Screen.Width;
  //Form1.Top:=Form1.Top+60;

  rect.Left := Screen.WorkAreaLeft;
  rect.Top := Screen.WorkAreaTop;
  rect.Right := Screen.WorkAreaWidth;
  rect.Bottom := Screen.WorkAreaHeight;
  SystemParametersInfo(SPI_SETWORKAREA,Screen.Height,@rect,SPIF_UPDATEINIFILE);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:08 Uhr.
Seite 1 von 2  1 2      

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