Moin Moin!
Danke für's Bäume-Abräumen, das hilft beim Wald-sehen ;-)
Immer wieder gerne.
Bleibt nur die (akademische) Frage , warum seit Firefox 3 das Cmd-Window für das ursprüngliche Batch-File versteckt wird ...
Weil sich die meisten Benutzer (vornehmlich die ganz ahnungslosen Mausschubser) an den "häßlichen schwarzen Fenstern" [1] stören. Typischerweise braucht man die DOS-Boxen ja ohnehin nur noch, um irgendein buntes Tool zu starten oder irgendwelche Hintergrundsachen zu erledigen, die ohnehin keiner sehen will.
Wenn Du mindestens Win2K garantieren kannst, müßtest Du das versteckte Fenster auch wieder hervorzaubern können:
Es gibt eine Funktion GetConsoleWindowHandle() (eben erst ab Win2K), die liefert das HWND der Konsole, in der das (Konsolen-)Programm aufgerufen wurde. Ein ShowWindow(hWnd,SW_SHOWNORMAL) müßte die Konsole sichtbar machen. Für ältere Windows-Versionen muß man sich ein wenig mehr anstrengen:
#include <windows.h>
HWND KnownWindowHandle=0;
HWND WINAPI GetConsoleWindow()
{
if (0==KnownWindowHandle) {
/* Based on Knowledge Base Q124103 */
#define MY_BUFSIZE 1024
char newWindowTitle[MY_BUFSIZE]="";
char oldWindowTitle[MY_BUFSIZE]="";
char currDir[MY_BUFSIZE]="";
if (0==GetConsoleTitle(oldWindowTitle,MY_BUFSIZE)) { return 0; }
GetCurrentDirectory(MY_BUFSIZE,currDir);
wsprintf(newWindowTitle,"::%d::%d::%s::",GetTickCount(),GetCurrentProcessId(),currDir);
if (0==SetConsoleTitle(newWindowTitle)) { return 0; }
Sleep(40); // Ensure window title has been updated.
KnownWindowHandle=FindWindow(NULL,newWindowTitle);
SetConsoleTitle(oldWindowTitle);
}
return KnownWindowHandle;
}
(Stammt aus den Tiefen meines RAID-Arrays, keine Garantie!)
[1] O-Ton eines Mausschubser-Kunden in einem "S.M." abgekürzten Projekt, an dem ich zum Glück nicht wesentlich beteiligt war. "M." bedeutete Messung, Kenner des Projektcodes deuteten den Projektnamen allerdings als SM im Domina-Sinn.
Sinngemäß aus dem Kopf zitiert (Turbo C under DOS im Windows-Fenster):
void main(void)
{
/* ... */
spawn("C:\\command.com /c mkdir c:\temp");
spawn("C:\\command.com /c mkdir c:\temp\foo");
spawn("C:\\sm\\bin\\step2.exe foo bar baz");
/* .... */
}
Irgendwann hab ich dem Autoren dieser Zeilen dann mal gezeigt, wie man an die Online-Hilfe kommt, und dass es in C durchaus eine mkdir-Funktion gibt -- der Code hat einfach zu sehr in den Augen gebrannt.
Alexander
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".