AGB  ·  Datenschutz  ·  Impressum  







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

unti shellobj und WM_ message

Ein Thema von Rociel · begonnen am 27. Okt 2006 · letzter Beitrag vom 27. Okt 2006
Antwort Antwort
Rociel

Registriert seit: 13. Feb 2005
Ort: Könnern/MD
107 Beiträge
 
Delphi 2006 Personal
 
#1

unti shellobj und WM_ message

  Alt 27. Okt 2006, 11:15
hi, ich hab folgfendes problem, ich will eine WM_ message einbinden (WM_CLOSE), habe aber eine prozedur, die die unit shellobj benötigt, nun sagt delphi aber immer, die deklaration der message-proc sei nicht richtig geforwarded....

wenn ich die shellobj nicht mit einbinde läuft aber alles mit den messages....

kennt einer ne lösung, bei der ich beides nutzen kann?
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#2

Re: unti shellobj und WM_ message

  Alt 27. Okt 2006, 12:07
Was gebräuchlich ist:

Delphi-Quellcode:
uses
  Windows, Messages, ShellAPI
Die Unit "ShellObj" kenn ich jetzt nicht (denk ich mal ). Es wäre Sinnvoll wenn du noch sagst um welche Function/Procedur es sich handelt.

// Edit:

Achso, du meinst wohl die Unit "ShlObj". ?
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: unti shellobj und WM_ message

  Alt 27. Okt 2006, 12:24
ob eine Procedure richtig geforwardet wird hängt nicht davon ab welche Units eingebunden sind.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#4

Re: unti shellobj und WM_ message

  Alt 27. Okt 2006, 12:35
Stimmt.

Aber ohne genauere Infos kann man schlecht etwas sagen.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Rociel

Registriert seit: 13. Feb 2005
Ort: Könnern/MD
107 Beiträge
 
Delphi 2006 Personal
 
#5

Re: unti shellobj und WM_ message

  Alt 27. Okt 2006, 14:35
stimmt, die heißt ShlObj wird benötigt von:

Delphi-Quellcode:
function GetSpecialFolder(hWindow: HWND; Folder: Integer): String;
var
  pMalloc: IMalloc;
  pidl: PItemIDList;
  Path: PChar;
begin
  // get IMalloc interface pointer
  if (SHGetMalloc(pMalloc) <> S_OK) then
  begin
    MessageBox(hWindow, 'Couldn''t get pointer to IMalloc interface.',
               'SHGetMalloc(pMalloc)', 16);
    Exit;
  end;

  // retrieve path
  SHGetSpecialFolderLocation(hWindow, Folder, pidl);
  GetMem(Path, MAX_PATH);
  SHGetPathFromIDList(pidl, Path);
  Result := Path;
  FreeMem(Path);

  // free memory allocated by SHGetSpecialFolderLocation
  pMalloc.Free(pidl);
end;
so, wenn ich die nicht einbinde, dann läuft alle ok, wenn se aber eingebunden ist, dann bringt er bei

procedure WMclose(var Msg:TMessage);message WM_CLOSE; die meldung: [Fehler] main.pas(70): E2065 Ungenügende Forward- oder External-Deklaration: 'Tshutdown_061025.WMclose'
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#6

Re: unti shellobj und WM_ message

  Alt 27. Okt 2006, 14:45
Dann setze doch mal die Procedure WMClose() ein paar zeilen weiter oben in deinem Code oder
stelle mit

Delphi-Quellcode:
program Project1;

procedure GetTest(param: char); forward; // <--<<<

procedure BevoreTest;
begin
  GetTest(#0);
end;

procedure GetTest(param: char);
begin
end;

begin
  //...
end.
vorran.

Arbeitest du mit der VCL / OOP ?
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Rociel

Registriert seit: 13. Feb 2005
Ort: Könnern/MD
107 Beiträge
 
Delphi 2006 Personal
 
#7

Re: unti shellobj und WM_ message

  Alt 27. Okt 2006, 14:57
also das forward geht irgendwie nicht.....

der code sieht so aus, und geht nich, hab die procedur schon so weit wie möglich nach oben gesetzt:

Delphi-Quellcode:
      procedure WMclose(var Msg:TMessage);message WM_CLOSE;
    procedure Abmelden1Click(Sender: TObject);
    procedure Ruhezustand1Click(Sender: TObject);
    procedure Standby1Click(Sender: TObject);
    procedure Neustart1Click(Sender: TObject);
    procedure Herunterfahren1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Prozessbeenden1Click(Sender: TObject);
    procedure Computersperren1Click(Sender: TObject);
    procedure Abmelden3Click(Sender: TObject);
    procedure Neustart3Click(Sender: TObject);
    procedure Herunterfahren3Click(Sender: TObject);
    procedure Abmelden2Click(Sender: TObject);
    procedure Neustart2Click(Sender: TObject);
    procedure Herunterfahren2Click(Sender: TObject);
    procedure Ruhezustand3Click(Sender: TObject);
    procedure Standby3Click(Sender: TObject);
    procedure Standby2Click(Sender: TObject);
    procedure PopupMenu1Popup(Sender: TObject);
    procedure Ruhezustand2Click(Sender: TObject);
    procedure Einstellungen1Click(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure TrayDblClick(Sender: TObject);
    procedure showtimer(art : tdown);
  private
    closable : boolean;
  public
        procedure shutdown(typ : Tdown);


  end;

var
  shutdown_061025: Tshutdown_061025;

implementation

  uses hib, ShlObj;

{$R *.dfm}

function SetSuspendState(Hibernate,ForceCritical,DisableWakeEvent:boolean):boolean;stdcall;
external 'powrprof.dll';
function IsPwrSuspendAllowed():boolean;stdcall;
external 'powrprof.dll';
function IsPwrHibernateAllowed():boolean;stdcall;
external 'powrprof.dll';
function LockWorkStation():boolean;stdcall;
external 'User32.dll';

procedure WMclose(var Msg:TMessage);
begin
Showmessage('ok');
end;
ich arbeite mit VCL

wenn ich da n forward stehen hab, passt dann da noch n "message WM_CLOSE" hin?
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#8

Re: unti shellobj und WM_ message

  Alt 27. Okt 2006, 15:00
Na dann...

Ggf. Fehlt ja nur ein TForm1.WMClose... etc.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Rociel

Registriert seit: 13. Feb 2005
Ort: Könnern/MD
107 Beiträge
 
Delphi 2006 Personal
 
#9

Re: unti shellobj und WM_ message

  Alt 27. Okt 2006, 15:03
ja ok, die woche war lang=)

is nur die frage, warum es trotzdem geht, wenn die unit nicht eingebunden ist
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#10

Re: unti shellobj und WM_ message

  Alt 27. Okt 2006, 15:07
es wird dann vermutlich klappen weil die entsprechende Forwarddeclaration wo anders vorhanden ist etc. bzw. durch einen Namenskonflikt durch die ShlObj alles nicht mehr klappt.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  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 11:03 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