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.
static BOOL CALLBACK DialogFunc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
static STARTUPINFO si;
SECURITY_ATTRIBUTES sa;
static HANDLE hPipeOutRead=INVALID_HANDLE_VALUE;
static HANDLE hPipeOutWrite=INVALID_HANDLE_VALUE;
PROCESS_INFORMATION pi;
char cPipeResult[BUFSIZE];
DWORD dwBytesRead;
switch (msg) {
case WM_INITDIALOG:
SetWindowText(hwndDlg,"CreateProcess-Test");
//
// Erstellen der Pipe
sa.nLength=sizeof(sa);
sa.bInheritHandle=TRUE;
sa.lpSecurityDescriptor=NULL;
CreatePipe(&hPipeOutRead,&hPipeOutWrite, &sa, 0);
//
// Definieren der StartupInfos von Kindprozessen
ZeroMemory(&si, sizeof(STARTUPINFO));
si.cb=sizeof(STARTUPINFO);
si.dwFlags=STARTF_USESTDHANDLES|STARTF_USESHOWWINDOW;
si.wShowWindow=SW_HIDE;
si.hStdInput=GetStdHandle(STD_INPUT_HANDLE);
si.hStdOutput=hPipeOutWrite;
si.hStdError=GetStdHandle(STD_ERROR_HANDLE);
return TRUE;
case WM_COMMAND:
switch (LOWORD(wParam)) {
case IDOK:
//
// Starten eines Kindprozesses
ZeroMemory(&pi,sizeof(PROCESS_INFORMATION));
CreateProcess(NULL, "ipconfig /all", NULL, NULL, TRUE, CREATE_DEFAULT_ERROR_MODE|NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi);
WaitForSingleObject(pi.hProcess, INFINITE);
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
memset(cPipeResult,0,BUFSIZE);
ReadFile(hPipeOutRead,cPipeResult,sizeof(cPipeResult),&dwBytesRead,NULL);
SetDlgItemText(hwndDlg,IDTEXT,cPipeResult);
break;
case IDCANCEL:
EndDialog(hwndDlg,0);
return 1;
}
return TRUE;
case WM_CLOSE:
EndDialog(hwndDlg,0);
return 0;
}
return FALSE;
}
Genau - FTP war nur ein Beispiel.Original geschrieben von chibisuke
es geht noch nicht unbedingt um FTP hier, sondern es geht um bidirektionale kommunikation.