关于WM_SETTEX的疑问 WM_SETTEXT 是不会有问题的, 应该是你代码的问题或者你贴代码上来 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 EDIT控件文本长度是有限制的,改用CRichEdit吧 #include "Every.h"static HANDLE hInputRead,hInputWrite,hInputWriteDup;static HANDLE hOutputRead,hOutputWrite,hOutputReadDup;static HANDLE hProcess ;HANDLE StartChildProcess( LPSTR Command ){ static SECURITY_ATTRIBUTES PipeSA , PipeSA1 ; UINT ExitCode ; DWORD cbwrite , cbread ; DWORD PipeLen = 4096 ; static TCHAR reponse[4096] = {0} ; LPSTR Notify ; PipeSA.nLength = sizeof(SECURITY_ATTRIBUTES) ; PipeSA.bInheritHandle = TRUE ; PipeSA.lpSecurityDescriptor = NULL ; CreatePipe( &hOutputRead , &hOutputWrite , &PipeSA , PipeLen ) ; DuplicateHandle(GetCurrentProcess(), hOutputRead, GetCurrentProcess(), &hOutputReadDup, 0, FALSE, DUPLICATE_SAME_ACCESS); PipeSA1.nLength = sizeof(SECURITY_ATTRIBUTES) ; PipeSA1.bInheritHandle = TRUE ; PipeSA1.lpSecurityDescriptor = NULL ; CreatePipe( &hInputRead , &hInputWrite , &PipeSA1 , PipeLen ) ; DuplicateHandle(GetCurrentProcess(), hInputWrite, GetCurrentProcess(), &hInputWriteDup, 0, FALSE, DUPLICATE_SAME_ACCESS); CloseHandle( hInputWrite ) ; CloseHandle( hOutputRead ); hProcess = PrepAndLaunchRedirectedChild( Command , hOutputWrite , hInputRead ) ; //启动子进程 if( hProcess == NULL ) { return FALSE ; } else return hProcess ;}重定向子进程I/O并启动子进程 DWORD WINAPI ReadFromPipe( LPVOID item ){ static TCHAR request[4096] = {0} ; DWORD cbread ; int lasterr ; threadpara *uint = (threadpara *)item ; while(TRUE) { if( !ReadFile( uint->RWpipe , request , 4095 , &cbread , NULL ) || ! cbread ) { lasterr = GetLastError() ; if ( lasterr == ERROR_BROKEN_PIPE ) break; // pipe done - normal exit path. else return FALSE ; // Something bad happened. } if( cbread ) WriteToEdit( uint->edit , request ) ; } return TRUE ;}BOOL WriteToPipe( LPSTR lpszINPUT ){ DWORD length , cbwrite ; length = strlen( lpszINPUT ) ; if( hInputWrite!= NULL || length > 0 ) if( !WriteFile( hInputWriteDup, lpszINPUT, strlen(lpszINPUT), &cbwrite , NULL ) ) if ( GetLastError() == ERROR_NO_DATA ) ; // Pipe was closed (do nothing). else return FALSE ; // Something bad happened. return TRUE ;}两个子进程实现 现在知道问题是readfile阻塞了,这个怎么解决啊 线程问题! VC 如何实现自制按钮响应PushButton函数的时候按钮变色 请教:如何在对话框上响应该对话框上按钮的右键消息 开发一个mac地址控件 如何使用extern来导入使用结构体结构体 请看看这是什么错误? 绿色软件 局域网四国军棋 只有250k包含客户端和服务器程序 怎么用_NewEnum方法获取_Collection中的元素? 得了ms"社区之星",散分 SDI中怎样切换两个FORMVIEW? 新手想学mfc 找女朋友,愿意的加我
static HANDLE hOutputRead,hOutputWrite,hOutputReadDup;
static HANDLE hProcess ;HANDLE StartChildProcess( LPSTR Command )
{
static SECURITY_ATTRIBUTES PipeSA , PipeSA1 ;
UINT ExitCode ;
DWORD cbwrite , cbread ;
DWORD PipeLen = 4096 ;
static TCHAR reponse[4096] = {0} ; LPSTR Notify ; PipeSA.nLength = sizeof(SECURITY_ATTRIBUTES) ;
PipeSA.bInheritHandle = TRUE ;
PipeSA.lpSecurityDescriptor = NULL ;
CreatePipe( &hOutputRead , &hOutputWrite , &PipeSA , PipeLen ) ;
DuplicateHandle(GetCurrentProcess(), hOutputRead,
GetCurrentProcess(), &hOutputReadDup, 0,
FALSE, DUPLICATE_SAME_ACCESS);
PipeSA1.nLength = sizeof(SECURITY_ATTRIBUTES) ;
PipeSA1.bInheritHandle = TRUE ;
PipeSA1.lpSecurityDescriptor = NULL ;
CreatePipe( &hInputRead , &hInputWrite , &PipeSA1 , PipeLen ) ;
DuplicateHandle(GetCurrentProcess(), hInputWrite,
GetCurrentProcess(), &hInputWriteDup, 0,
FALSE, DUPLICATE_SAME_ACCESS); CloseHandle( hInputWrite ) ;
CloseHandle( hOutputRead );
hProcess = PrepAndLaunchRedirectedChild( Command , hOutputWrite , hInputRead ) ;
//启动子进程
if( hProcess == NULL )
{
return FALSE ;
}
else
return hProcess ;
}重定向子进程I/O并启动子进程
{
static TCHAR request[4096] = {0} ;
DWORD cbread ;
int lasterr ;
threadpara *uint = (threadpara *)item ;
while(TRUE)
{
if( !ReadFile( uint->RWpipe , request , 4095 , &cbread , NULL ) || ! cbread )
{
lasterr = GetLastError() ;
if ( lasterr == ERROR_BROKEN_PIPE )
break; // pipe done - normal exit path.
else
return FALSE ; // Something bad happened.
}
if( cbread )
WriteToEdit( uint->edit , request ) ;
}
return TRUE ;
}BOOL WriteToPipe( LPSTR lpszINPUT )
{
DWORD length , cbwrite ;
length = strlen( lpszINPUT ) ; if( hInputWrite!= NULL || length > 0 )
if( !WriteFile( hInputWriteDup, lpszINPUT, strlen(lpszINPUT), &cbwrite , NULL ) )
if ( GetLastError() == ERROR_NO_DATA )
; // Pipe was closed (do nothing).
else
return FALSE ; // Something bad happened.
return TRUE ;
}两个子进程实现