nikolaosk
asked on
function that retrieves the state(maximise,minimise,restore) of an open window depending on its class
hi there
i need a function in delphi where i can pass as a parameter the name of a class e.g
"Notepad", and get a result back as a string or integer that tells me whether this window that belongs to this class
is mininimised,maximised or restored
for example
i open the art.txt notepad file and i minimise it
i want the fuction to return me the following:
minimise=0
restore=1
maximise=2
urgent help needed
thanks
function Get_windowminimised(const thestring: WideString): long;
var
foldercaption:cardinal;
foldercaptiontext,folderca ptiontext1 :array[0.. 255] of char;
begin
foldercaption := FindWindow('myClass', nil);
GetWindowText (foldercaption, foldercaptiontext, 256);
isminimised (blah)
Result := ismin or is max or is restored
End;
i need a function in delphi where i can pass as a parameter the name of a class e.g
"Notepad", and get a result back as a string or integer that tells me whether this window that belongs to this class
is mininimised,maximised or restored
for example
i open the art.txt notepad file and i minimise it
i want the fuction to return me the following:
minimise=0
restore=1
maximise=2
urgent help needed
thanks
function Get_windowminimised(const thestring: WideString): long;
var
foldercaption:cardinal;
foldercaptiontext,folderca
begin
foldercaption := FindWindow('myClass', nil);
GetWindowText (foldercaption, foldercaptiontext, 256);
isminimised (blah)
Result := ismin or is max or is restored
End;
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
hi,
your code works....
but in this function of yours
function GetWindowState(Wnd:HWnd):I nteger;
i need to pass the classname of the window that i want to see if it is minimised or not, as a parameter.can you change the function a bit?
your code works....
but in this function of yours
function GetWindowState(Wnd:HWnd):I
i need to pass the classname of the window that i want to see if it is minimised or not, as a parameter.can you change the function a bit?
... Can you explain more?
ASKER
hi i will try to explain as soon possible.
using the code below i can pass in the following function
GetStateOfWindow(param1,pa ram2)
param1="CabinetWclass"
param2="My Computer"
and get the state of the window.
what i need is a similar function that i will be able to pass the same arguments and force(and not check) the window state. for example i open "my computer" window and SET the STATEof the window to restore or minimised.
some minor alterations to the code below i think
thanks
************************** ********** *******
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function GetStateOfWindow(const thestr,thestr2: WideString): Integer;
var
h2,h1:string;
wnd:thandle;
WPlacement:PWINDOWPLACEMEN T;
begin
try
h2:=string(thestr);
h1:=string(thestr2);
wnd := FindWindow(pansichar(h1),p ansichar(h 2));
GetMem(WPlacement,SizeOf(T WINDOWPLAC EMENT));
WPlacement^.Length:=SizeOf (TWINDOWPL ACEMENT);
if GetWindowPlacement(Wnd,WPl acement) then
begin
case WPlacement^.showCmd of
SW_SHOWMAXIMIZED: Result := 2;
SW_SHOWMINIMIZED: Result := 0;
SW_SHOWNORMAL: Result := 1;
end
end
else
result:=-2;
finally
FreeMem(WPlacement);
end;
//end;
end;
procedure TForm1.Button1Click(Sender : TObject);
var
a:integer;
x1,x2:string;
begin
x1:='My Computer';
x2:='CabinetWClass';
a:=GetStateOfWindow(x1,x2) ;
showmessage(inttostr(a));
end;
end.
using the code below i can pass in the following function
GetStateOfWindow(param1,pa
param1="CabinetWclass"
param2="My Computer"
and get the state of the window.
what i need is a similar function that i will be able to pass the same arguments and force(and not check) the window state. for example i open "my computer" window and SET the STATEof the window to restore or minimised.
some minor alterations to the code below i think
thanks
**************************
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function GetStateOfWindow(const thestr,thestr2: WideString): Integer;
var
h2,h1:string;
wnd:thandle;
WPlacement:PWINDOWPLACEMEN
begin
try
h2:=string(thestr);
h1:=string(thestr2);
wnd := FindWindow(pansichar(h1),p
GetMem(WPlacement,SizeOf(T
WPlacement^.Length:=SizeOf
if GetWindowPlacement(Wnd,WPl
begin
case WPlacement^.showCmd of
SW_SHOWMAXIMIZED: Result := 2;
SW_SHOWMINIMIZED: Result := 0;
SW_SHOWNORMAL: Result := 1;
end
end
else
result:=-2;
finally
FreeMem(WPlacement);
end;
//end;
end;
procedure TForm1.Button1Click(Sender
var
a:integer;
x1,x2:string;
begin
x1:='My Computer';
x2:='CabinetWClass';
a:=GetStateOfWindow(x1,x2)
showmessage(inttostr(a));
end;
end.
You can use GetWindowPlacement Win32 API function:
I wrote a function that returns the status by a string using GetWindowPlacement =>
function GetWindowState(Wnd:HWnd):s
var WPlacement : PWINDOWPLACEMENT;
begin
GetMem(WPlacement,SizeOf(T
WPlacement^.Length:=SizeOf
if GetWindowPlacement(Wnd,WPl
begin
case WPlacement^.showCmd of
SW_SHOWMAXIMIZED: Result := 'Maximized';
SW_SHOWMINIMIZED: Result := 'Minimized';
SW_SHOWNORMAL: Result := 'Normal';{or restored}
end
end
else
Result:='ERR';
FreeMem(WPlacement);
end;
Programmer-x