AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

API Casten ala ALIAS von VB

Ein Thema von EWeiss · begonnen am 16. Okt 2008 · letzter Beitrag vom 17. Okt 2008
Antwort Antwort
Seite 1 von 2  1 2      
EWeiss
(Gast)

n/a Beiträge
 
#1

API Casten ala ALIAS von VB

  Alt 16. Okt 2008, 22:51
Wie kann ich in Delphi ein ALIAS auf eine API Funktion realisieren.

Code:
DECLARE FUNCTION MyCreateDIBSection LIB "GDI32.DLL" ALIAS "CreateDIBSection" (BYVAL hdc AS DWORD, pbmi AS MYBITMAPINFO, BYVAL dwUsage AS DWORD, BYVAL ppvBits AS DWORD, BYVAL hSection AS DWORD, BYVAL dwOffset AS DWORD) AS DWORD
Ich möchte
Delphi-Quellcode:
type
  PBitmapInfo = ^TBitmapInfo;
  {$EXTERNALSYM tagBITMAPINFO}
  tagBITMAPINFO = packed record
    bmiHeader: TBitmapInfoHeader;
    bmiColors: array[0..0] of TRGBQuad;
  end;
  TBitmapInfo = tagBITMAPINFO;
  {$EXTERNALSYM BITMAPINFO}
  BITMAPINFO = tagBITMAPINFO;
das Array ändern bmiColors: array[0..255] of TRGBQuad
und einen eigenen Typ als MYBITMAPINFO definieren.

gruss Emil
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#2

Re: API Casten ala ALIAS von VB

  Alt 16. Okt 2008, 23:04
function foo(...): ...; external 'dllname 'bar';
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

Re: API Casten ala ALIAS von VB

  Alt 16. Okt 2008, 23:12
Zitat von Dax:
function foo(...): ...; external 'dllname 'bar';
Kenn ich nicht muss mal nachlesen was foo genau macht.
Danke

gruss Emil
  Mit Zitat antworten Zitat
Benutzerbild von Dunkel
Dunkel

Registriert seit: 26. Mär 2007
Ort: Klingenstadt
541 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: API Casten ala ALIAS von VB

  Alt 16. Okt 2008, 23:23
Zitat von EWeiss:
Kenn ich nicht muss mal nachlesen was foo genau macht.
Foo ist quasi ein Platzhalter. Man könnte auch "Irgendwas", "IhrTextKönnteHierStehen" oder ähnliches schreiben.
Edit: hier noch die gekürzte deutsche Zusammenfassung der Bedeutung von Foo.
Es ist zu wahr um schön zu sein...
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

Re: API Casten ala ALIAS von VB

  Alt 16. Okt 2008, 23:26
Zitat von Dunkel:
Zitat von EWeiss:
Kenn ich nicht muss mal nachlesen was foo genau macht.
Foo ist quasi ein Platzhalter. Man könnte auch "Irgendwas", "IhrTextKönnteHierStehen" oder ähnliches schreiben.
Das bedeutet ich muss die DLL statisch einladen(Load Library) um foo verwenden zu können ?
Oder geht das auch ohne.

gruss Emil
  Mit Zitat antworten Zitat
Benutzerbild von Dunkel
Dunkel

Registriert seit: 26. Mär 2007
Ort: Klingenstadt
541 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: API Casten ala ALIAS von VB

  Alt 16. Okt 2008, 23:28
Die Funktion der DLL dynamischen linken funktioniert auch.
Es ist zu wahr um schön zu sein...
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

Re: API Casten ala ALIAS von VB

  Alt 17. Okt 2008, 00:43
Finde keine Themen dazu auch nicht in der Hilfe
Keine ahnung wie ich das linken soll

gruss Emil
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#8

Re: API Casten ala ALIAS von VB

  Alt 17. Okt 2008, 09:04
Delphi-Quellcode:
type
  TMyImportedFunction = function(dwFoo: DWORD): integer;stdcall;

var MyFunction: TMyImportedFunction = nil;

...

var h: THandle;
begin
  h := LoadLibrary('MeineDLL.dll');
  if h <> 0 then
    begin
      @MyFunction := GetProcAddress('Wuppdi');
      if Assigned(@MyFunction) then
        Bla := MyFunction(10);
    end;
end;
Die Funktion heißt hier in der DLL "Wuppdi" und angesprochen wird sie über "MyFunction". Ich kann Dir da Ollis DLL-Tutorial empfehlen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#9

Re: API Casten ala ALIAS von VB

  Alt 17. Okt 2008, 09:22
Zitat von DeddyH:
Delphi-Quellcode:
type
  TMyImportedFunction = function(dwFoo: DWORD): integer;stdcall;

var MyFunction: TMyImportedFunction = nil;

...

var h: THandle;
begin
  h := LoadLibrary('MeineDLL.dll');
  if h <> 0 then
    begin
      @MyFunction := GetProcAddress('Wuppdi');
      if Assigned(@MyFunction) then
        Bla := MyFunction(10);
    end;
end;
Die Funktion heißt hier in der DLL "Wuppdi" und angesprochen wird sie über "MyFunction". Ich kann Dir da Ollis DLL-Tutorial empfehlen.
So ganz verstehe ich das trotzdem nicht
Ich möchte nichts anderes als BITMAPINFO auf MyBITMAPINFO linken
Das andere bleibt doch alles gleich .. hmmm verstehe die Technik nicht.

Werd mir das Tutorial mal anschaun ob ich da einen vergleich habe.
Mit DLL's kenn ich mich aus nur nicht mit foo und konsorte.
Warum muss ich eine DLL einladen von der die externals schon in der Windows.pas enthalten sind.
Das ist doppelt gemoppelt oder nicht ?

Danke für deine beschreibung.

gruss Emil
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#10

Re: API Casten ala ALIAS von VB

  Alt 17. Okt 2008, 09:31
Man sollte den Ausgangspost auch mal genau durchlesen. Allerdings bezweifle ich, ob das so gehen wird, denn die Funktion der DLL erwartet an der Stelle halt ein Array mit einem Element und nicht mit 256, d.h. die Record-Größe stimmt dann ja nicht. Kann aber auch sein, dass ich hier Quatsch rede.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:24 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