Avatar billede krismort Nybegynder
21. januar 2001 - 23:04 Der er 14 kommentarer og
1 løsning

Find hDC

hej
Er der nogen som ced hvordan man kan lave et lille program som viser hDC\'en for det program/vindue som er aktivt?
(altså ikke kun form1.hDC men også fx. notepad, denne computer og Explorer)

Kristian
Avatar billede driis Nybegynder
21. januar 2001 - 23:24 #1
Du skal bruge API kaldet GetForegroundWindow.
Jeg smækker lige et eksempel sammen til dig, 2 secs...
Avatar billede driis Nybegynder
21. januar 2001 - 23:49 #2
Okay, dette her returnerer hDC og hWnd for et vindue (i variablerne dc og wnd). Af en eller anden grund ændre device-nummeret sig hele tiden - jeg ved ikke om det er meningen at et vindues hDC skal ændre sig hele tiden, eller om jeg har begået en eller anden fejl? Men anyways, se om du kan bruge det her:

Declare Function GetForegroundWindow Lib \"user32.dll\" () As Long
Declare Function GetWindowDC Lib \"user32\" (ByVal wnd As Long) As Long
Dim dc As Long
Dim wnd As Long

Sub Upddc()

wnd = GetForegroundWindow
dc = GetWindowDC(wnd)

Debug.Print dc, wnd

End Sub
Avatar billede tdaugaard Nybegynder
21. januar 2001 - 23:53 #3
driis:> hDC ændrer sig hele tiden. Det er ikke en fejl i din kode. Derfor anbefaler M$ også at man ikke gemmer et hDC i en variabel men istedet \"henter\" hDC\'et fra det pågældende objekt HVER gang man skal bruge det.
Avatar billede driis Nybegynder
22. januar 2001 - 00:59 #4
tdaugaard>> OK, så ved man også dét :-)
Avatar billede tdaugaard Nybegynder
22. januar 2001 - 01:01 #5
Det er sku meget rart at vide.. lidt ØV hvis man har siddet og lavet noget stort der bruger hDC\'s og man gemmer dem i variabler .. :-(
Avatar billede krismort Nybegynder
22. januar 2001 - 12:50 #6
>> driis
Hej jeg har ikke fået testet dit eksempel endnu men er det således at det retunerer hdc\'en od hwd for det vindue som er fokuseret?
>>tdaugaard
Men hensyn til hvordan du siger at hdc konstant ændrer sig...Skal man så oprette sin funktion i et loop/timer så det hele tiden bliver opdateret?
Hvornår ændres et vindues hdc? Er det sådan at det ændres når åbner et nyt?

Kristian 
Avatar billede tdaugaard Nybegynder
22. januar 2001 - 14:53 #7
krismort:> som svar på dit spm. til driis, så ja. det gør det.

Og ja, hDC ændrer sig hele tiden når der åbnes/lukkes vinduer, objekter etc.
Den måde du bruger det på er f.eks. at lave driis\' kode som en sub der returnere hDC & hWnd og bruge den som (read-only) hDC property.

Declare Function GetForegroundWindow Lib \"user32.dll\" () As Long
Declare Function GetWindowDC Lib \"user32\" (ByVal wnd As Long) As Long

Sub ActivehDC(hWnd As Long, hDC As Long)
  hWnd = GetForegroundWindow
  hDC = GetWindowDC(hWnd)
End Sub
Avatar billede superinfojens Nybegynder
22. januar 2001 - 19:41 #8
Hvordan ved man så om Fx: Notepad er åben ???

Hvis det hele tid skifter
Avatar billede tdaugaard Nybegynder
22. januar 2001 - 20:03 #9
superinfojens:> Det kan du ikke vide ud fra hDC\'et anyway, men du kan vha. hWnd og et par andre API\'s få .Caption af vinduet hvorefter du med en simpel InStr(strCaption, \"Notepad\") eller \"Notesblok\" kan finde ud af det. Det er den mest \"clumsy\" måde at gøre det på, men jeg har ikke kendskab til at andre.
Avatar billede joern Nybegynder
22. januar 2001 - 22:10 #10
Hvad er hDC?
Ud fra svarene, kan jeg gætte.  Engang fik jeg hjælp til og lavede et lille prototype-program til en tasklist, der bl.a. kan gemmes som fil, - hvilket var formålet.  Kildekode på http://www.jkfsoft.dk/tasklist.zip

M.v.h.  Jørn
Avatar billede tdaugaard Nybegynder
23. januar 2001 - 00:34 #11
hDC .. Device Context, men hvad det bruges til helt præcist aner jeg ikke.
Men det bruges bl.a. ved BitBlt (API) funktionen samt et par andre (DrawIcon ..)
Avatar billede superinfojens Nybegynder
23. januar 2001 - 06:44 #12

Total sej kode joern

Tusinde tak #;0=)

Det glemmer jeg ikke, det er helt sikkert
Avatar billede krismort Nybegynder
23. januar 2001 - 15:40 #13
>> joern & Taugaard
Så vidt jeg kan forstå bruges dDC som et hukommelses område til at gemme grafik og lignende. h står for handle og det er en værdi man skal bruge for at hente/gemme i sit hDC..

(Så vidt jeg er kommet frem til)...Vil gerne høre fra andre som måske har en bedre fortolkning 8)
Avatar billede tdaugaard Nybegynder
23. januar 2001 - 16:00 #14
Det er ikke et hukommelses område, men noget nær et ID på en kontrol ligesom et hWnd.
Avatar billede xafion Nybegynder
09. februar 2001 - 20:47 #15
Handle Display Content.
Krismort himself lærte mig at komme ind i BitBlt. Nu er jeg gået igang med en Skinner og diverse ting :)

BTW: Folk med forstand på BitBlt: Kik mit spørgssmål.
http://www.eksperten.dk/spm/48976
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