程序设计『Programing』
程序设计『Programing』
Great looking user interfaces! for your DSP and control applications. The following images are a taste of what InstrumentLab has to offer.
Applications include: real time data monitoring, process control, signal analysis, digital signal analysis, video analysis, data visualization, visual instrumentation and more.
很久之前写过一个浏览器的User Agent模拟工具,但是比较粗糙。没有进度,也没有单独的线程处理下载。在下载大文件的时候就卡死了。今天重新修改了一下,至于模拟User Agent干嘛就不用明说了吧?嘻嘻
这里使用的开发环境是vs2010,不过几乎所有的设置在早期版本的vs中基本是一致的。启动vs之后关闭其他的项目和解决方案,然后按照下面的流程创作工程即可。
C/C++ 代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | void ExecutCmd() { SECURITY_ATTRIBUTES sa; HANDLE hRead,hWrite; wchar_t * lpCommandLine =_T("ping.exe www.h4ck.org.cn "); sa.nLength = sizeof(SECURITY_ATTRIBUTES); sa.lpSecurityDescriptor = NULL; sa.bInheritHandle = TRUE; TCHAR temp[255] = {0}; _tcscpy(temp,lpCommandLine); if (!CreatePipe(&hRead,&hWrite,&sa,0)) { MessageBox(_T("Error On CreatePipe()")); return; } STARTUPINFO si; PROCESS_INFORMATION pi; si.cb = sizeof(STARTUPINFO); GetStartupInfo(&si); si.hStdError = hWrite; si.hStdOutput = hWrite; si.wShowWindow = SW_HIDE; si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES; if (!CreateProcess(NULL,temp ,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi)) { MessageBox(_T("Error on CreateProcess()")); return; } CloseHandle(hWrite); char buffer[4096] = {0}; DWORD bytesRead; while (true) { if (ReadFile(hRead,buffer,0x3FFu,&bytesRead,NULL) == NULL) break; outputstr += buffer;//m_outputstr is CString OutputDebugString(outputstr); UpdateData(false); Sleep(200); } } |