Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi problem beim übersetzen von funktionen (https://www.delphipraxis.net/94515-problem-beim-uebersetzen-von-funktionen.html)

ghost007 22. Jun 2007 14:38


problem beim übersetzen von funktionen
 
Hallo,
ich hab aus einem forum folgende angaben für das benutzen einer dll datei:
Zitat:

BOOL GetProductString(OUT PVOID Buffer, IN ULONG BufferLength);
--- Should give: "G15 Keyboard"

BOOL SetBgLight(IN INT value);
--- value: 0=off 1=half 2=full

BOOL SetLCDLight(IN INT value);
--- value: 0=off 1=half 2=full

BOOL SetLCDContrast(IN INT value);
--- value: the higher, the more contrast; when value exceedes 43 it is set back to 18, which is the level, the LCDMon.exe sets it to low

BOOL SetMacroKeys(IN BOOL M1, IN BOOL M2, IN BOOL M3, IN BOOL MR);
--- multiple are really possible!

INT GetLight(IN INT value);
--- value: look at values.txt

DWORD SetCallback(IN DWORD lpProc);
--- lpProc: pointer to the callback function:
--- VOID WINAPI keyProc(INT pressedKeys);
ich hab auch schon ein paar in mein delphi einbauen(übersetzen können), aber wie übersetze ich den rest?
Hier das was ich bisher hab:
Delphi-Quellcode:
procedure SetBgLight(Value:Integer);stdcall;export;external 'lglight.dll';
procedure SetLCDLight(Value:Integer);stdcall;export;external 'lglight.dll';
procedure SetMacroKeys(M1,M2,M3,MR:Boolean);stdcall;export;external 'lglight.dll';
MfG - Ghost007

Phoenix 22. Jun 2007 14:46

Re: problem beim übersetzen von funktionen
 
Das was Du hast ist schonmal falsch. Das sind alles functions die einen Boolean zurückgeben, keine Procedures.

GetLight ist auch eine, die einen Integer zurückgibt.

SetMacroKeys gibt auch einen Boolean zurück und nimmt 4 Booleans an.

ghost007 22. Jun 2007 15:13

Re: problem beim übersetzen von funktionen
 
hm, die 3 funktionieren aber so wie se da sind :shock: und zwar wunderbar :gruebel:

wie müsste das denn für die anderen aussehen?

MfG - Ghost007

g0rmed 22. Jun 2007 15:38

Re: problem beim übersetzen von funktionen
 
So wie ich das sehe machst du ne Delphi-übersetztung für die G15-Tastaturfunktionen. Kannst du die vllt. als unit ins open-source stellen wenn alles fertig ist :?:

quantum 22. Jun 2007 16:31

Re: problem beim übersetzen von funktionen
 
Die G15 ist schon ein geiles Teil. Ich liebe sie :P

Apropos, versuch es mal damit:

Delphi-Quellcode:
unit lglight;

interface

uses
  Windows;

function GetProductString(pBuffer: PChar; iBufferLength: DWORD): DWORD; stdcall; external 'lglight.dll';

//--- value: 0=off 1=half 2=full
function SetBgLight(iValue: Integer): DWORD; stdcall; external 'lglight.dll';

//--- value: 0=off 1=half 2=full
function SetLCDLight(iValue: Integer): DWORD; stdcall; external 'lglight.dll';

// --- value: the higher, the more contrast; when value exceedes 43 it is set back to 18, which is the level, the LCDMon.exe sets it to low
function SetLCDContrast(iValue: Integer): DWORD; stdcall; external 'lglight.dll';

//--- multiple are really possible!
function SetMacroKeys(M1, M2, M3, MR: DWORD): DWORD; stdcall; external 'lglight.dll';

function GetLight(iValue: Integer): Integer; stdcall; external 'lglight.dll';

//--- lpProc: pointer to the callback function:
//--- VOID WINAPI keyProc(INT pressedKeys);
function SetCallback(pValue: Pointer): DWORD; stdcall; external 'lglight.dll';

implementation

end.

ghost007 26. Jun 2007 11:55

Re: problem beim übersetzen von funktionen
 
hi,
sehr schön :) danke aber eins versteh ich nicht.
Was bringt die letzte funktion?

MfG - Ghost007

ghost007 27. Jun 2007 16:44

Re: problem beim übersetzen von funktionen
 
*PUSHÜ

shmia 27. Jun 2007 17:19

Re: problem beim übersetzen von funktionen
 
kleine Verbesserung:
Delphi-Quellcode:
uses
  Windows;
const LGLIGHT_DLL='lglight.dll'; // <==== hier kann man zentral den Namen der DLL angeben
function GetProductString(pBuffer: PChar; iBufferLength: DWORD): DWORD; stdcall; external LGLIGHT_DLL;
...

Mit SetCallback kann dein Programm sich über Tastendrücke informieren lassen:
Delphi-Quellcode:
procedure KeyProc(pressedKeys:integer);stdcall;
begin
   if Assigned(Form1) then
      Form1.MemoPressedKeys.Add(intToStr(pressedKeys));
end;
....

   SetCallback(@KeyProc); // hier müsste man noch den Returnwert von SetCallback auswerten

ghost007 27. Jun 2007 18:05

Re: problem beim übersetzen von funktionen
 
danke :)
funktioniert wunderbar

MfG - Ghost007


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:28 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz