第1个问题: CVI链接ADOæ•°æ®åº“问题.<br />已解决~~ä¸é”™~~~ä¸è¿‡è¿˜æ˜¯åœ¨æ“ä½œè®°å½•å’Œå—æ®µæ—¶æ¯”delphi麻烦很多~~~<br /><br /> //建立数æ®åº“è”æŽ¥ï¼Œå¹¶èŽ·å¾—è”æŽ¥å¥æŸ„<br />// hdbc = DBConnect ("Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=D:\LabWindows\14\user.mdb;");<br />// hdbc = DBConnect ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\LabWindows\14\user.mdb;Persist Security Info=False"); <br /> hdbc = DBConnect ("Provider=MSDASQL.1;Persist Security Info=False;Data Source=client");<br />// hdbc = DBConnect ("DSN=client");<br /> DisplayPanel (panelHandle);<br /> RunUserInterface ();<br /> DiscardPanel (panelHandle);<br /> <br /> //å½“é€€å‡ºåº”ç”¨ç¨‹åºæ—¶ï¼Œå…³é—æ•°æ®åº“连接<br /> DBDisconnect (hdbc); <br /><br /><br /><br />第2个问题: CVI调用控制å°ç¨‹åºå¹¶å–其结果问题<br />如CreateProcess().<br />在delphié‡Œæ˜¯è¿™æ ·çš„:<br />function TForm1.WinExecAndWait32(FileName: string; Visibility: Integer; var ShowString: string): Cardinal;<br />var<br /> sa: TSecurityAttributes;<br /> hReadPipe, hWritePipe: THandle;<br /> ret: BOOL;<br />// strBuff: array[0..255] of Char;<br /> strBuff: array[0..4095] of Char;<br /> lngBytesread: DWORD;<br /> WorkDir: String;<br /> StartupInfo: TStartupInfo;<br /> ProcessInfo: TProcessInformation;<br />begin<br /> FillChar(sa, Sizeof(sa), #0);<br /> sa.nLength := Sizeof(sa);<br /> sa.bInheritHandle := True;<br /> sa.lpSecurityDescriptor := nil;<br /> CreatePipe(hReadPipe, hWritePipe, @sa, 0);<br /><br /> WorkDir := ExtractFileDir(Application.ExeName);<br /> FillChar(StartupInfo, Sizeof(StartupInfo), #0);<br /> StartupInfo.cb := Sizeof(StartupInfo);<br /> StartupInfo.dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;<br /> StartupInfo.wShowWindow := Visibility;<br /><br /> StartupInfo.hStdOutput := hWritePipe;<br /> StartupInfo.hStdError := hWritePipe;<br /><br /> if not CreateProcess(<br /> nil,<br /> PChar(FileName), { pointer to command line string }<br /> @sa, { pointer to process security attributes }<br /> @sa, { pointer to thread security attributes }<br /> True, { handle inheritance flag }<br />// CREATE_NEW_CONSOLE or { creation flags }<br /> NORMAL_PRIORITY_CLASS,<br /> nil, { pointer to new environment block }<br /> PChar(WorkDir), { pointer to current directory name, PChar}<br /> StartupInfo, { pointer to STARTUPINFO }<br /> ProcessInfo) { pointer to PROCESS_INF }<br /> then<br /> begin<br /> Result := INFINITE {-1};<br /> end<br /> else<br /> begin<br /> ret := CloseHandle(hWritePipe);<br /> ShowString := ';<br /> while ret do<br /> begin<br /> FillChar(strBuff, Sizeof(strBuff), #0);<br /> ret := ReadFile(hReadPipe, strBuff, 256, lngBytesread, nil);<br /> ShowString := ShowString + strBuff;<br /> end;<br /><br /> Application.ProcessMessages;<br /> WaitforSingleObject(ProcessInfo.hProcess, INFINITE);//<br /> GetExitCodeProcess(ProcessInfo.hProcess, Result);<br /> CloseHandle(ProcessInfo.hProcess); { to prevent memory leaks }<br /> CloseHandle(ProcessInfo.hThread);<br /> CloseHandle(hReadPipe);<br /> end;<br />end;<br /><br />if WinExecAndWait32(str, ShowModeSele, buff) = 0 then<br /> Memo1.Lines.Add(buff);<br /><br />è¿™æ ·å³å¯æ”¶åˆ°è¿›ç¨‹FileName(EXE文件)在DOS界é¢çš„æ˜¾ç¤ºç»“æžœ.<br /><br />下图就是Keil应用CreateProcess()回显的æˆåŠŸä¾‹å,我用以上程åºä¹Ÿè°ƒé€šäº†.<br />æ°´æ½é‡Œåº”该有帖图.<br /><br /><br /><br />å…ˆåœ¨æ¤æ„Ÿè°¢äº†~~~
|