Avatar billede ultik Nybegynder
11. oktober 2000 - 21:13 Der er 8 kommentarer og
1 løsning

API til AlwaysOnTop

Hej !

Jeg leder efter en API funktion der kan tvinge et fremmedt vindue til at være \"Always On Top\", samt en måde til at rekvirere et fremmedt vindues handle, da jeg går ud fra at det skal bruges i API kaldet, jeg ser gerne en vejledning i at bruge det i et Delphi 3 standard program, da jeg må indrømme at API kald aldrig har været min stærke side !........

P.S. : Det jeg lige umiddelbart skal bruge det til er at tvinge et \"periodisk system program\" til at være on top når jeg har kemi og sidder og laver notater..........

På forhånd tak og med sædvanlig venlig hilsen
Ulrik Jensen
ulrik@qcom.dk
Avatar billede elv Nybegynder
11. oktober 2000 - 21:37 #1
Er med på en lytter... Er det ikke noget med nogle handles? Man kan i hvert tilfælde lave noget fusk med SetForegroundWindow. Prøv at slå op under den.
Avatar billede ultik Nybegynder
11. oktober 2000 - 22:08 #2
hmm, umiddelbart tager den kun en parameter, handle, og jeg går ud fra at den bare giver vinduet med det givne handle fokus, så det er ikke helt den jeg skal bruge :-(
Avatar billede ultik Nybegynder
11. oktober 2000 - 22:17 #3
Ha, jeg fandt den søreme selv,

Public Declare Function SetWindowPos Lib \"user32\" Alias \"SetWindowPos\" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

så bruger man flags til at sætte værdien :

HWND_BOTTOM
HWND_BROADCAST
-----DESKTOP
-----NOTOPMOST
-----TOPMOST ( always on top )

ellers tak for hjælpen ! :-).........
Avatar billede ultik Nybegynder
11. oktober 2000 - 22:19 #4
hov, glemte at finde den der skaffer et fremmed vindues handle, der er så stadig 100 points på spil !
Avatar billede ultik Nybegynder
11. oktober 2000 - 22:24 #5
hov, glemte en af de flags muligheder :

HWND_TOP



Avatar billede ultik Nybegynder
11. oktober 2000 - 23:53 #6
den ovenstående funktions deklarering er godt nok i Visual Basic, da det er den eneste API oversigt jeg har, følger der en med Delphi 3 standard ? og hvordan kan jeg i så fald finde den ?
Avatar billede elv Nybegynder
12. oktober 2000 - 08:06 #7
http://www.eksperten.dk/spm/15407.
Enkelt, og dog så ligetil...
Avatar billede delphi Nybegynder
12. oktober 2000 - 12:33 #8
Det er nu ikke så nemt at få de 100 point, når du nu har lukket spørgsmålet.... :) 

Anyway: I det ret nye spørgsmål http://www.eksperten.dk/spm/28322 skrev jeg lidt (meget lidt) om kaldet til SetWindowPos.

Med hensyn til at finde et handle til et andet kørende program, så er der flere muligheder ligefra at køre en enum funktion på samtlige aktive processer, hvilket er p*sse svært, til noget så simpelt som et kald til API funktionen FindWindow. 
Nedenstående er en ændring af noget jeg engang brugte til at finde en aktiv Paradox og bringe den frem i Z-order (dvs. vise Paradox winduet på skærmen).

FindWindow kan kaldes med to parametre.  Hvis man kender windows titlen, dvs det der står i \'den blå titel linie\', er det langt det nemmeste at bruge WindowsName parameteren.  Det gør jeg i dette eksempel for at finde et handle til Outlook.

Const
  // LauncApplicationClassName  = \'PDOXWINDESKTOP\';
  LauncApplicationWindowName = \'Inbox - Microsoft Outlook\';

Var
  WindowHandle : HWnd;
//  ClassName    : Array[0..50] Of Char;
  WindowName  : Array[0..50] Of Char;



Begin
  // Convert navn til en PChar.
  // StrPCopy(ClassNam, LauncApplicationClassName);
  StrPCopy(WindowName, LauncApplicationWindowName);

  // Kald Windows API for at finde en handle til programmet (0=Error/Not found).     
  // WindowHandle := FindWindow(ClassNam, Nil);
  WindowHandle := FindWindow(Nil, WindowName);

  If WindowHandle=0 Then
    ShowMessage(\'Programmet er ikke startet.\')
  Else
    Begin
      // Kald SetWindowPos mv.
    End;
End.
Avatar billede ultik Nybegynder
12. oktober 2000 - 20:32 #9
det er skam ikke noget problem at få de 100 point, her henvises til :

http://www.eksperten.dk/spm/28700
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
Kategori
Kurser inden for grundlæggende programmering

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