PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ShellExecute Problem



big earl
22.12.2008, 10:36
Also ich bekomm hierbei immer einen Fehler

#include <shellapi.h>

int main ()
{
int z = ShellExecute(0 , "open", "C:\\Program Files\\File.exe",0, 0, SW_NORMAL);
}

Wie kann ich das beheben (oO) ?

l0dsb
22.12.2008, 10:45
Welchen Fehler bekommst du denn genau? Zur Kompilierzeit oder zur Laufzeit?

Cr4ckEye
22.12.2008, 10:51
http://msdn.microsoft.com/en-us/library/bb762153.aspx

enco
22.12.2008, 10:53
Versuch es mal mit der windows.h statt der shellapi.h.

big earl
22.12.2008, 11:02
Es kommt sowas


1 C:\Users\big earl\Desktop\Unbenannt1.cpp In file included from C:\Users\big earl\Desktop\Unbenannt1.cpp

und wenn ich das als windows.h deklariere, kommt


5 C:\Users\big earl\Desktop\Unbenannt1.cpp `Shellexecute' undeclared (first use this function)

btw. hab das hiernach gemacht

http://www.cbuilder.de/artikel/progstarten/ShellExecute.html

Hamtaro
22.12.2008, 11:23
Du solltest sowieso nicht ShellExecute nehmen um ein Programm zu öffnen, sondern CreateProcess

l0dsb
22.12.2008, 11:46
Das sowieso. :)

Du hast leider vergessen, zu erwähnen, welchen Compiler du verwendest. Ein Versuch wäre es Wert, ShellExecute[x] ([x] = A für ANSI, W für Unicode) zu verwenden (z. B. im Falle von MSVC, da dort standardmäßig die Widechar-Varianten verwendet werden).

big earl
22.12.2008, 12:25
ok, ;X's post habe ich grundsätzlich ignoriert, da ich schon nach dem Smile nichts mehr verstanden haben :P

Nun habe ich das dank Perfo mal so probiert


#include <windows.h>
#include <shellapi.h>

int main ()
{
int z = ShellExecute(0 , "open", "C:\\Program Files\\File.exe",0, 0, SW_NORMAL);
}

jedoch kommt dabei dieser Fehler


6 C:\Users\big earl\Desktop\ShellExecute\Täst.cpp invalid conversion from `HINSTANCE__*' to `int'

weis nicht, obs am 'int z =' liegt

und zu CreateProcess hab ich das hier gefunden
http://msdn.microsoft.com/en-us/library/ms682512.aspx

Doch da ich grad noch so If abfrage hinbekomme, versteh ich hierbei nichts -.-

blackberry
22.12.2008, 12:32
HINSTANCE ShellExecute(
HWND hwnd,
LPCTSTR lpOperation,
LPCTSTR lpFile,
LPCTSTR lpParameters,
LPCTSTR lpDirectory,
INT nShowCmd
);
(Quelle: http://msdn.microsoft.com/en-us/library/bb762153(VS.85).aspx)

ShellExecute gibt HINSTANCE zurück und du hast versucht es einem Integer (ohne Cast) zuzuweisen.

l0dsb
22.12.2008, 12:33
ShellExecute gibt den Datentyp HINSTANCE__ * zurück, keinen Integer. Setz' einfach ein (int) vor dein ShellExecute und es sollte gehen. ;)

Cr4ckEye
22.12.2008, 12:36
ja es liegt ab int, da der return wert nicht als int sondern als HINSTANCE (struct) zurückgegeben wird. Zumal ich nicht verstehe wofüt du den rückgabe wert brauchst.
Warum machst du denn sowas wenn dur grad bei If abfragen bist? Lern doch erstmal fertig und üb fleißig ;-)

l0dsb
22.12.2008, 12:38
Er wird eine Fehlerabfrage auf Konstanten wie ERROR_FILE_NOT_FOUND einbauen wollen, was auch vollkommen gerechtfertigt ist (ja, ich weiß, man lässt Fehlerabfragen gerne weg... o0).

big earl
22.12.2008, 12:50
Vielen Dank leute, hat mit dem (int) geklappt
( wobei ich immernoch nicht weis, wieso in Klammern -.- )

und warum ich das hier schon mache ?
hmm.....ka ^^

l0dsb
22.12.2008, 12:56
Lies dir z. B. das hier (http://home.fhtw-berlin.de/~junghans/cref/CONCEPT/cast.html) mal durch. ;)