Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
void CPingerDlg::OnIPInfo()
{
// TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
SECURITY_ATTRIBUTES sa;
HANDLE hReadPipe, hWritePipe;
char * pcCommandLine = "ipconfig /all";
DWORD dwWaitResult = WAIT_TIMEOUT, dwBytesRead, dwExitCode, dwError;
char cReadLine[MAX_LINE_LENGTH];
BOOL bDoRead = TRUE, bOK = TRUE;
MSG AppMsg;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
//Pipes erzeugen
sa.nLength=sizeof(sa);
sa.bInheritHandle=TRUE;
sa.lpSecurityDescriptor=NULL;
bOK = CreatePipe(&hReadPipe, &hWritePipe, &sa, 1048576);
if(!bOK)
{
//FEHLER
dwError = GetLastError();
bOK = FALSE;
goto PROCESS_END_NOPIPE; //ja, ich weiß: niemals goto verwenden. Wollte aber nicht so viele if's schachteln
}
//Pipes eintragen
si.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
si.hStdInput = GetStdHandle(STD_INPUT_HANDLE);
si.hStdOutput = hWritePipe;
si.hStdError = hWritePipe;
si.wShowWindow = SW_SHOWMINNOACTIVE;
//Prozess starten
bOK = CreateProcess(NULL,
pcCommandLine,
NULL,
NULL,
TRUE,
NORMAL_PRIORITY_CLASS | CREATE_NEW_CONSOLE,
NULL,
NULL,
&si,
?);
if(!bOK)
{
//FEHLER
dwError = GetLastError();
goto PROCESS_END_NOPROC; //ja, ich weiß: niemals goto verwenden. Wollte aber nicht so viele if's schachteln
}
//Auf Ende warten und Messages lesen
while(dwWaitResult != WAIT_OBJECT_0)
{
//Prozess beendet?
dwWaitResult = WaitForSingleObject(pi.hProcess, 10);
//Ausgaben aus der Pipe lesen
while(dwSizeLow = GetFileSize(hReadPipe, &dwSizeHigh))
{
ZeroMemory(cReadLine, MAX_LINE_LENGTH);
if(bDoRead = ReadFile(hReadPipe, cReadLine, MAX_LINE_LENGTH - 1, &dwBytesRead, NULL))
{
if(dwBytesRead)
{
m_MyListCtrl.SetWindowText(CString(cReadLine));
}
}
else
{
dwBytesRead = GetLastError();
}
}
//Applikations-Messagequeue verarbeiten
if(PeekMessage(&AppMsg, 0, 0, 0, PM_NOREMOVE))
{
GetMessage(&AppMsg, 0, 0, 0);
TranslateMessage(&AppMsg);
DispatchMessage(&AppMsg);
}
}
bOK = GetExitCodeProcess(pi.hProcess, &dwExitCode);
if(bOK)
{
if(dwExitCode != 0)
{
//Prozeßrückgabe != 0
//...
}
}
else
{
//FEHLER
dwError = GetLastError();
bOK = FALSE;
}
//Close handles
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
PROCESS_END_NOPROC:
CloseHandle(hWritePipe);
CloseHandle(hReadPipe);
if(lpEnvironment != NULL)
delete[] lpEnvironment;
PROCESS_END_NOPIPE:
GetParentFrame()->UpdateWindow();
return bOK;
}
}