AGB  ·  Datenschutz  ·  Impressum  







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

UpdateLayeredWindow

Ein Thema von delphinia · begonnen am 7. Jan 2008 · letzter Beitrag vom 8. Jan 2008
Antwort Antwort
delphinia

Registriert seit: 16. Feb 2006
444 Beiträge
 
Delphi 11 Alexandria
 
#1

UpdateLayeredWindow

  Alt 7. Jan 2008, 23:09
Ich nutze in einer Form

function UpdateLayeredWindow(hwnd: HWND; hdcDst: HDC; pptDst: PPoint; psize: PSize; hdcSrc: HDC; pptSrc: PPoint; crKey: TColor; pblend: PBlendFunction; dwFlags: DWORD): BOOL; stdcall; external 'user32.dll';


Wie kann ich nun bzw was muss ich tun damit wenn das Programm nun auf 98 ausgeführt wird diese Sache nicht beachtet wird und somit nicht zum Fehelr führt!
Doreen
Gruss Doreen
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

Re: UpdateLayeredWindow

  Alt 8. Jan 2008, 00:29
Zitat von delphinia:
Ich nutze in einer Form

function UpdateLayeredWindow(hwnd: HWND; hdcDst: HDC; pptDst: PPoint; psize: PSize; hdcSrc: HDC; pptSrc: PPoint; crKey: TColor; pblend: PBlendFunction; dwFlags: DWORD): BOOL; stdcall; external 'user32.dll';


Wie kann ich nun bzw was muss ich tun damit wenn das Programm nun auf 98 ausgeführt wird diese Sache nicht beachtet wird und somit nicht zum Fehelr führt!
Windows version gegenprüfen

gruss Emil
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#3

Re: UpdateLayeredWindow

  Alt 8. Jan 2008, 06:44
Das Hauptproblem liegt aber hier: dynamisch einbinden und nicht statisch. Du bindest die Funktion nun statisch ein und somit kann die EXE von EXE Loader gar nicht erst gestartet werden unter 98, da er die imports nicht auflösen kann. Also schau dich mal bei LoadLibrary() etc um.

@EWeiss: kann er noch soviel reinschreiben, das würde gar nicht ausgeführt werden...
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: UpdateLayeredWindow

  Alt 8. Jan 2008, 07:57
Getestet habe ich es nicht, aber so ähnlich müsste es gehen:
Delphi-Quellcode:
function UpdateLayeredWindow(wnd: HWND; hdcDst: HDC; pptDst: PPoint; psiz: PSize; hdcSrc: HDC; pptSrc: PPoint; crKey: TColor; pblend: PBlendFunction; dwFlags: DWORD): BOOL;
var
  hUser32: THandle;
  UpdateLayeredWnd: function(wnd: HWND; hdcDst: HDC; pptDst: PPoint; psiz: PSize; hdcSrc: HDC; pptSrc: PPoint; crKey: TColor; pblend: PBlendFunction; dwFlags: DWORD): BOOL; stdcall;
begin
  Result := false;
  hUser32 := LoadLibrary('user32.dll');
  if hUser32 <> 0 then
    try
      UpdateLayeredWnd:= GetProcAddress(hUser32, 'UpdateLayeredWindow');
      if Assigned(UpdateLayeredWnd) then
        result:= UpdateLayeredWnd(wnd, hdcDst, pptDst, psiz, hdcSrc, pptSrc, crKey, pblend, dwFlags);
    finally
      FreeLibrary(hUser32);
    end;
end;
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

Re: UpdateLayeredWindow

  Alt 8. Jan 2008, 13:39
Zitat von Muetze1:
@EWeiss: kann er noch soviel reinschreiben, das würde gar nicht ausgeführt werden...
Deshalb ja meine Antwort ..
So wie ich weis steht diese API unter W98 nicht zur verfügung.
Um also einen Fehler zu vermeiden sollte er das Betriebssystem gegenprüfen und diese halt ausschalten wenn das system W98 ist.

oder hab ich das falsch verstanden?

gruss Emil
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#6

Re: UpdateLayeredWindow

  Alt 8. Jan 2008, 14:01
Und wo soll er den Code zum ermitteln der Windows Version hinschreiben wo doch seine EXE gar nicht erst von Windows geladen (somit auch nicht gestartet) wird?
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

Re: UpdateLayeredWindow

  Alt 8. Jan 2008, 14:33
Zitat von Muetze1:
Und wo soll er den Code zum ermitteln der Windows Version hinschreiben wo doch seine EXE gar nicht erst von Windows geladen (somit auch nicht gestartet) wird?
Ach so dann gehts natürlich nicht.. habe das nicht herauslesen können das dies der fall ist.

gruss Emil
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#8

Re: UpdateLayeredWindow

  Alt 8. Jan 2008, 14:45
Zitat von EWeiss:
Ach so dann gehts natürlich nicht.. habe das nicht herauslesen können das dies der fall ist.
Stand nicht explizit da, aber da er die Funktion statisch einbindet, wird das ganze vom Compiler in die IMPORTS Table der EXE geschrieben und die muss der EXE Loader von Windows auflösen und befüllen. Wenn der eine dort angegebene Funktion nicht gefunden wird, dann gibt es die schöne Meldung von Windows, dass das Programm nicht gestartet werden kann, da eine oder mehrere ihrer Komponenten nicht gefunden werden konnte.
  Mit Zitat antworten Zitat
Antwort Antwort


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 13:08 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