Zum Inhalt springen

Programm aus einen Programm prüfen


Babybaer

Empfohlene Beiträge

danke vielleicht hast ja auch noch eine andere idee. ich möchte z.b. partitionieren und danach formatieren. das Problem ist wenn ich diese Aktionen ausführe wartet er nicht ab bis der Task beendet wurde. Habe das jetzt mir ShellExecute und mit WinExec probiert. Könnte eine Returnwert gebrauchen der mir sagt das das Programm beendet wurde.

Idee vielleicht???

THX

Link zu diesem Kommentar
Auf anderen Seiten teilen

son mist ShellExecute frist doch mein "Format c:" nicht.

LPCSTR lpszFile = "format.com c: /fs:ntfs /v:WINDOWS /Y";

WinExec(lpszFile,SW_SHOW);

so tuts ja aber da habe ich das selbe Problem. Keine Handle!!!

--------------------

und so tuts nicht!

HINSTANCE test;

test = ShellExecute(0, "open", "format.com", "c: /fs:ntfs /v:WINDOWS /Y", NULL, SW_SHOWNORMAL);

:confused:

Link zu diesem Kommentar
Auf anderen Seiten teilen

scheinbar bin ich etwas doof aber hast mir vielleicht mal eine Beispiel. bei mir tus nicht so tooolllll.

das bitte nicht anschauen :-)

LPDWORD lpExitCode;

HINSTANCE handle;

handle = ShellExecute(0,"open","test.cmd",NULL,NULL,SW_SHOWNORMAL);

do{

if(GetExitCodeProcess(handle,lpExitCode)==true)

break;

}while(1);

Link zu diesem Kommentar
Auf anderen Seiten teilen

Mach mal so:

DWORD dwLastErrorReturnCode;
STARTUPINFO si;
memset(&si,0, sizeof(si));
si.cb = sizeof(STARTUPINFO);
si.dwFlags = STARTF_USESHOWWINDOW;
PROCESS_INFORMATION pi;
memset(π,0, sizeof(pi));

BOOL bSuccess = CreateProcess(NULL, (LPTSTR)"formatoderwasauchimmer", NULL, NULL, false, NORMAL_PRIORITY_CLASS, NULL, NULL, &si,π);
if (bSuccess)
{
WaitForSingleObject(pi.hProcess, INFINITE);
GetExitCodeProcess(pi.hProcess, &dwLastErrorReturnCode);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}
else
dwLastErrorReturnCode = GetLastError();[/PHP]

Viel Spass noch

Goos

Link zu diesem Kommentar
Auf anderen Seiten teilen

Neeneenee, und da schreib ich 2 mal ShellExecuteEx() ;)

Bsp.:


SHELLEXECUTEINFO si;


memset (&si,0,sizeof(SHELLEXECUTEINFO));
si.cbSize = sizeof(SHELLEXECUTEINFO);
si.fMask = SEE_MASK_NOCLOSEPROCESS;
si.lpFile = (const char*)"format.com";
si.lpParameters = "c: /fs:ntfs /v:WINDOWS /Y";
si.nShow = SW_SHOW;
ShellExecuteEx(&si);

do
{
GetExitCodeProcess(si.hProcess,&dwExitCode);
}
while(dwExitCode == STILL_ACTIVE);
[/PHP]

:)

Gruß

Guybrush

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von Shlo

Bitte, bitte benutze niemals memset() wenn es eine Windows Anwendung ist, dafür gibts nähmlich eine API Funktion - ZeroMemory()

Das halt ich fuer Schwachfug :)

Wenn man mal nachschaut, dann gibts in der winbase.h ein

#define ZeroMemory RtlZeroMemory

#define RtlZeroMemory(Destination,Length) memset((Destination),0,(Length))

folglich ruft ZeroMemory memset auf, was soll also an memset schlechter sein? :D

Goos

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von Shlo

Erstens weil das ganze C-Runtime (RTL) zu deiner *.exe eingebunden wird das bläht die *.exe nur auf

Wird zu deiner *.exe mit ZeroMemory genauso dazugelinkt, is also kein Argument.

Original geschrieben von Shlo

zweitens wegen der Geschwindigkeit :mod:

Wie kommst auf die Idee, dass deine Version dann schneller waere? ....Erklaerung bitte :)

Original geschrieben von Shlo

drittens weil dafür entsprechende API Calls gibt

Wo soll da das Argument sein?!?! (Ich sag ja auch nicht: Leute wascht nur noch mit Weisser Riese Megaperls.....und begruende das dann mit: Na weil es Weisser Riese Megaperls gibt! :D )

Original geschrieben von Shlo

usw, usf... Genug ? :rolleyes::)

Aehmm noe...noch hast kein wirkliches Argument gebracht, also nicht genug :)

Goos

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von Shlo

Erstens weil das ganze C-Runtime (RTL) zu deiner *.exe eingebunden wird das bläht die *.exe nur auf, zweitens wegen der Geschwindigkeit :mod: drittens weil dafür entsprechende API Calls gibt usw, usf... Genug ? :rolleyes::)

Achja, wenn ihr des Englischen mächtig seid, dann http://www.catch22.org.uk/tuts/minexe.asp

Die Code-Größe ist eigentlich kein Argument mehr, zum einen sind die aktuellen Maschinen mit ausreichend Speicher ausgestattet und zum anderen gibt es das Konzept der "shared Libraries". Das Killerargument wird übrigens auf der von Dir genannten Seite gleich mit aufgeführt: Die nicht vorhandene/eingeschränkte Portabilität bei Verwendung des Windows-APIs. Ich würde soweit wie möglich auf die Standard C-Library Funktionen zurückgreifen.

Nic

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...