Win32 Api - How???

Tags:    delphi

Sidder og leger lidt med Win32 Api'en i Delphi og sidder med msdn og kigger paa kodestumper. Men hvordan i alverden "oversaetter" man det til Delphi'sk?? Tag for eksempel den her kode

Fold kodeboks ind/udKode 


Hvordan ville man bruge det i Delphi???



7 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
Hehe, den situation husker jeg udmærket.
Men det er faktisk meget enkelt - lær C :P
Det vil faktisk gavne dig utrolig meget, når du læser eksempler, og især når du læser på msdn eller i Win32 hjælpen.
C er faktisk heller ikke meget ulig Object Pascal, så det bliver ikke et større problem, det gælder bare om at få reglerne lagt fast.

Men en lille oversættelse for dig er på vej ;)

Det er bare en funktions deklaration, som gerne skulle se sådan ud i Delphi (hvis jeg da ikke er blevet for rusten i Pascal efterhånden):
Fold kodeboks ind/udKode 


Er dog ikke helt sikker på syntaksen ^, da det er lang tid siden, jeg har brugt Delphi.
Men pInputs er i hvert fald et array af integers ifølge din C kode, så kan du jo selv ændre syntaksen, så den passer, hvis jeg har skrevet den forkert ;)

En lille oversættelses guide i øvrigt:

int = int = integer
UINT = unsigned int = integer
LPUINT = unsigned *int = array af integers eller pointer til integer (det samme rent syntaksmæssigt i C).



Indlæg senest redigeret d. 14.03.2006 21:07 af Bruger #3470
Lige en lille tommelfinger med de der to:

UINT = Unsigned INT
PUINT = Pointer Unsigned INT.

Et P som er klistret på forrest på en type betyder og ofte at det er en pointer til typen.

EDIT: Delphi's UINT type hedder Cardinal.



Indlæg senest redigeret d. 14.03.2006 22:26 af Bruger #2330
Hej Jonas,
en vigtig ting når du leger med Win32API i Delphi er at Delphi's headers, alt efter version af Delphi, generelt er så dårligt opdateret at du skal være parat til at skrive mange ting selv.

Bla. mangler der rimeligt mange "records" :)

Men husk brug endeligt forumet hvis du skal bruge hjælp :)

og lige en mindre rettelse :P
Fold kodeboks ind/udKode 


funktionen findes i windows.pas da det er en del af API funktionerne.

den bruges således
Fold kodeboks ind/udKode 


denne kode sender et mellemrum (#32) til den aktive kontrol på det aktive vindue i Windows. så hvis dit program er det valgte, sender den til den kontrol der nu engang er i brug.



Indlæg senest redigeret d. 14.03.2006 21:43 af Bruger #1330
Ok det hjalp noget. Hvad vis typen er af UINT og PUINT. Hvad er det i delphi? Er det integer begge 2?



Altså p = ^, men man kan ikke sige ^integer i en function, det giver fejl.

Har lavet følgende

function SendInput(nInputs: cardinal; pInputs: TInput; cbSize: integer) : uint; stdcall; external 'user32.dll';

Men får access violation når jeg eksekverer det.



Indlæg senest redigeret d. 15.03.2006 09:20 af Bruger #3275
^Integer bruger du når du laver en variabel som en pointer.

Få at få adressen på noget skal du bruge @ foran, og når du skal lave en pointer til en ikke pointer skal du bruge ^ EFTER.



Indlæg senest redigeret d. 15.03.2006 13:47 af Bruger #2330
Lukker.



t