Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hallo Leutz,

möchte gern aus meinem Programm prüfen, ob ein anderes Programm läuft. (z.b.MS-DOS Fenster "cmd").

Danke

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

Danke!!!

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:

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);

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

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

Das war spitze alles tut

Danke

Bitte, bitte benutze niemals memset() wenn es eine Windows Anwendung ist, dafür gibts nähmlich eine API Funktion - ZeroMemory(); Dasselbe gilt für strlen, strcpy usw (lstrlen, lstrcpy...)

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

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

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

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

Original geschrieben von nic_power

Die Code-Größe ist eigentlich kein Argument mehr...

für mich ist es schon ein Argument, aber wenn du meinst... :marine

Original geschrieben von Goos

Eine Frage haette ich noch....benutzt du das jetzt wirklich um Partitionen zu formatieren und so? :)

Goos

Ja warum nicht. Brauche nur eine Partition und die Programme sind auf meinen Rohling schon dabei.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.