Avatar billede Broholm Novice
03. januar 2000 - 11:07 Der er 6 kommentarer og
1 løsning

Maximering af et andet program fra Visual C++

Hej!

Er der nogen som ved hvordan, eller om, man kan maximere et programvindue fra et andet program skrevet i Visual C++? Det vel bare spørgsmål om at have en handle til vinduet og så sende en message til programmet, men jeg ved ikke lige, hvordan man kan gøre det.
Avatar billede sjensen Nybegynder
03. januar 2000 - 14:27 #1
Ved hjælp af Windows API kald (EnumWindowsxxx) kan du finde den handle der skal bruges til det pågældende vindue.

Derefter findes der en lang række andre API kald der kan bruges til at behandle det pågældende vindue, herunder ændre størrelse, synlighed, o.s.v.

Så se i Win32.hlp for yderligere info.

sjensen
Avatar billede Broholm Novice
03. januar 2000 - 15:25 #2
Jeg havde tænkt mig noget á la:
(nevermind pointere osv, bare princippet i det)

HWND hWnd = FindWindow(NULL,'Hvad det nu end hedder');

::SendMessage(hWnd,WM_ACTIVATE,...);

Vil det ikke umiddelbart kunne virke?
Avatar billede sjensen Nybegynder
03. januar 2000 - 15:39 #3
Jo, afgjort, men kun hvis findwindow kan returnere den rigtige handle. Jeg kan ikke se andet end at det burde virke, selvom jeg formentligt ville bruge et API kald i stedet for sendmessage.

Årsagen er at afhængig af messagekøen under windows kan det tage længere eller kortere tid inden vinduet får meddelelsen, og desuden ved man jo aldrig om det pågældende program selv "grapper" meddelelser som disse og derved overstyrer din kommando (med mindre du selv har lavet det andet program selvfølgelig)

Med et API kald arejder du direkte med vinduet uden om messagekøen.

sjensen
Avatar billede Broholm Novice
03. januar 2000 - 15:56 #4
Programmet er ikke et jeg selv har lavet, så jeg er lidt på herrens mark der. Hvad hedder de API kald, jeg skal bruge? Så vil jeg lige kigge på dem i online-doc.

-Broholm
Avatar billede Broholm Novice
03. januar 2000 - 16:00 #5
Jeg tror nok at jeg fandt dem.

http://msdn.microsoft.com/isapi/msdnlib.idc?theURL=/library/psdk/winui/windows_8qyb.htm

Var det dem du tænkte på?

-Broholm
Avatar billede michaelras Nybegynder
03. januar 2000 - 16:10 #6
det API kald i tænker på er det ShowWindow ???
Det er jo så simpelt at kalde som fx:

ShowWindow(Handle, SW_MAXIMIZE);

Kan også minimere osv. :)

Michael
Avatar billede Broholm Novice
04. januar 2000 - 08:47 #7
Jeg fandt en løsning med Enumwindows og Sendmessage(hwnd,WM_SYSCOMMAND, SC_RESTORE,0);

ShowWindow virkede ikke ordentligt, så desværre Michael... :(

Broholm
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester