Ich habe System() verwendet, um IE in meinem C++ - Code auf einen Klick der Schaltfläche zu starten. Der IE wird gestartet, aber ein cmd-Fenster wird geöffnet und es wird gehängt. Ich schließe das cmd-Fenster und dann funktioniert es reibungslos. Warum gibt es einen anfänglichen Hang, wenn ich den IE zum ersten Mal starte?Starten von IE mit System() verursacht Hang zum ersten Mal
Antwort
Die Ursache ist, dass die system()
eine Konsole öffnet und den Befehl von dort aufruft. Die Konsole wird nur geschlossen, wenn der Internet Explorer geschlossen wird.
Entweder verwenden CreateProcess oder Sie können Behelfslösung mit system()
als auch durch den START-Befehl:
system("start \"Internet Explorer\" \"C:\\Program Files\\Internet Explorer\\iexplore.exe\" www.google.com");
danke @axalis Ich habe den obigen Systembefehl und es verwendet funktionierte reibungslos. Können Sie mir bitte sagen, wie kann ich den vorhandenen IE mit einer angegebenen URL mit Systembefehl –
schließen Das ist eigentlich nicht so einfach, müssten Sie die CreateProcess-Methode verwenden, um das Prozesshandle abrufen, um es zu schließen. Aber dies funktioniert möglicherweise immer noch nicht wie gewünscht, wenn jemand andere Fenster geöffnet hat (durch Beenden des Prozesses werden alle IE-Fenster geschlossen). Um nur das jeweilige Fenster zu schließen, müssen Sie EnumWindows verwenden und alle Fenster überprüfen, um das Fenster zu finden, das Sie schließen möchten. Senden Sie dann eine WM_CLOSE-Nachricht an dieses Fenster (beachten Sie jedoch, wenn der Benutzer Registerkarten verwendet, die alle Registerkarten schließen im Fenster - im Moment weiß ich nicht, wie man eine bestimmte Registerkarte aufzählt/schließt) – axalis
Dieser Code startet IE CreateProcess
verwenden.
Sie können jedoch ShellExecute (ShellExecute(NULL, "open", "www.google.com", NULL, NULL, SW_SHOWDEFAULT);
) verwenden, die den Standardbrowser des Benutzers verwendet.
const char *pathToExplorer = "C:\\Program Files\\Internet Explorer\\iexplore.exe";
const char *webPage = "www.google.com";
char szCmdLine[1024];
sprintf(szCmdLine, "\"%s\" \"%s\"", pathToExplorer, webPage);
STARTUPINFO si = {0};
PROCESS_INFORMATION lp;
si.cb = sizeof(STARTUPINFO);
::CreateProcess(NULL,
szCmdLine,
NULL,
NULL,
FALSE,
CREATE_DEFAULT_ERROR_MODE | NORMAL_PRIORITY_CLASS,
NULL,
NULL,
&si,
&lp);
- 1. Zum ersten Mal multithreader
- 2. Bootstrap 2.1.1 "Collapsible" öffnet nicht zum ersten Mal in IE
- 3. Oracle zum ersten Mal lernen
- 4. Django Installation zum ersten Mal
- 5. Zum ersten Mal auf BASH
- 6. Zum ersten Mal SharedPreferences verwenden mit Gridview
- 7. TextInputDialog nur zum ersten Mal gezeigt
- 8. Erste Daten von PHP mit AJAX zum ersten Mal
- 9. Webview nicht zum ersten Mal geladen
- 10. ASP.Net-Anwendung zum ersten Mal läuft langsam
- 11. Web-Anwendung zum ersten Mal erstellen
- 12. MPMusicPlayerController arbeiten nicht zum ersten Mal
- 13. Boost für Windows, zum ersten Mal
- 14. Zum ersten Mal Spalten in Textdatei organisieren
- 15. Jquery nur zum ersten Mal arbeiten
- 16. Gurkenfehler zum ersten Mal. Das zweite Mal ist in Ordnung
- 17. Ionic Pop-up-Warnung zum ersten Mal
- 18. Android: Splash-Bildschirm nur zum ersten Mal
- 19. UserControl Ereignisse nicht zum ersten Mal
- 20. Android Studio Setup zum ersten Mal
- 21. Wie setzen Sie Werte zum ersten Mal
- 22. Swift UISwitch funktioniert nicht zum ersten Mal
- 23. JavaScript-API zum ersten Mal erstellen
- 24. $ location.path funktioniert nicht zum ersten Mal mit Ionic/Firebase
- 25. ROW_NUMBER() gibt keine gute Anzahl von Artikeln zum ersten Mal
- 26. Akzeptieren von Kreditkarten zum ersten Mal. Was muss ich tun?
- 27. Lange Laufzeit, wenn Abfrage zum ersten Mal in RedShift
- 28. Fehler bei der Verwendung von Google OAUTH zum ersten Mal
- 29. Inhalt zum ersten Mal Besucher von Schienen App
- 30. UISchalten Sie den Standardwert auf OFF, wenn Sie die App zum ersten Mal starten.
[Funktion Createprocess] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms682425 (v = VS.85) .aspx) oder [Wie rufe ich :: CreateProcess in C++, um eine ausführbare Windows-Datei zu starten?] (Http://stackoverflow.com/questions/42531/how-do-i-call-createprocess-in-c-to-launch-a-windows-executable) –
@JohnnyMopp Ich habe die Funktion nicht bekommen. Können Sie bitte den Funktionsaufruf von Create-Prozess zum Starten eines IE mit "C: \\ ProgramFiles \\ Internet Explorer \\ iexplorer.exe www.google.com" als URL mitteilen –