Problem mit ShellExecute
-
Hallo leutz, ich hab nen Problem mit ShellExecute beim BCB3:
Es kommt folgende Fehlermeldung:
[LinkerFehler] Unresolved external 'TForm1::ShellExecute(void*,const char*,const char*,const char*,const char*,int)' referenced from C:\MEDIAVORSCHAU\UNIT1.OBJ.
Mein Funktionsaufruf:
ShellExecute(NULL,"Open",Datei.c_str()," ",Verzeichnis.c_str(),SW_SHOW);
Ich hab Shellexecute in Form1-Public so deklariert:
int ShellExecute(HWND hwnd, LPCTSTR lpOperation, LPCTSTR lpFile, LPCTSTR lpParameters, LPCTSTR lpDirectory, int nShowCmd);
Kann mir jemand helfen? -was mach ich falsch?
-
ShellExecute ist eine API-Funktion, benenne deine Funktion zB. in MyShellExecute um oder benutze gleich das Original.
-
Dumm daran ist nur, dass dann eine noch schlimmere Fehlermeldung kommt, naja, mir gehts ja nur darum, dass er bei F1-Taste die Hilfe öffnet. Wie macht man das sonst?
-
#include <shellapi.hpp>
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ShellExecute(Handle,NULL,"d:\\test\\softplan.hlp",NULL, NULL, SW_NORMAL);
}
-
Spieleprogrammierer schrieb:
Dumm daran ist nur, dass dann eine noch schlimmere Fehlermeldung kommt,
Bitte etwas mehr Präzision... die Aussage "eine noch schlimmere Fehlermeldung" ist nutzlos, da das eine persönliche Wertung von dir darstellt und keine Angaben über den Inhalt der Fehlermeldung beinhaltet.
Spieleprogrammierer schrieb:
naja, mir gehts ja nur darum, dass er bei F1-Taste die Hilfe öffnet. Wie macht man das sonst?
Dafür gibts eigentlich ne extra API-Funktion "WinHelp".
-junix
-
hallo,
der junix hat recht, die hilfe ruft man normalerweise mit den dazu vorgesehenen funktionen auf, da kommt es nun darauf an, ob man das alte hlp oder das neue chm system verwendet.
beim alten system (rtf-dateien mit entsprechenden fussnoten ruft man die hilfe über eine funktion des TApplications-objects auf:
Application->HelpJump("Inhalt");beim neuen chm system ruft man eine funktion namens:
HtmlHelp(0, FChm->c_str(), HH_DISPLAY_TOC, 0);diese stammt aus der unit HtmlHlp muß in das entsprechende projekt eingebunden werden.
alles andere wäre eine abweichung des standards und somit eine todsünde :-)...
mfg
murph