//プロジェクト名keybd001 C++ソースファイルkeybd001.cpp imm32.lib #include #include #pragma comment(lib, "imm32.lib") extern "C" { __declspec(dllexport) void rowcol01(int rowcol02,int colret02); __declspec(dllexport) void setval01(int rowcol02); __declspec(dllexport) int clrval01(void); __declspec(dllexport) void setchr01(int rowcol02); __declspec(dllexport) int clrchr01(void); __declspec(dllexport) void setsub04(void); __declspec(dllexport) void clrsub04(void); __declspec(dllexport) void setselect(void); __declspec(dllexport) void sethome(void); __declspec(dllexport) void setend(void); __declspec(dllexport) void setret(void); __declspec(dllexport) void rmclosebtn(void); __declspec(dllexport) void maximize(void); __declspec(dllexport) char * getphonetic(char * string01); __declspec(dllexport) void kbd_dn(int vk_cd); __declspec(dllexport ) void kbd_up(int vk_cd); __declspec(dllexport) char * gettext(char * string01); __declspec(dllexport) long getcaretposx(void); __declspec(dllexport) long getcaretcol(void); __declspec(dllexport) char * getversion01(char * string01); __declspec(dllexport) void seticon01(char * string01,char * string02); static HWND hWnd01=0; static LONG pWnd01=0; static char lpStr01[256]; static int flag01=0; static int flag02=0; static int ctrl01=0; static int alt01=0; static int rowmax=1; static int colmax=1; static int colret=1; static int mojimax=0; static int rownum=1; static int colnum=1; static int lastkey=0; static HWND hWnd04=0; static LONG pWnd04=0; static char lpStr04[256]; LRESULT CALLBACK rtlentry(HWND hWnd,UINT msg,WPARAM wparam,LPARAM lparam); LRESULT CALLBACK mojigata(HWND hWnd,UINT msg,WPARAM wparam,LPARAM lparam); LRESULT CALLBACK caret01(HWND hWnd,UINT msg,WPARAM wparam,LPARAM lparam); WORD wCol(void); void filt01(void); WORD wCol(void) { WORD wRow, wCol, wRowStart; DWORD dw; POINT pos; GetCaretPos( &pos); HWND hWnd=GetFocus(); dw = (DWORD)SendMessage(hWnd, EM_CHARFROMPOS, 0, (LPARAM)MAKELPARAM(pos.x, pos.y)); wRow = HIWORD(dw); wRowStart = (WORD)SendMessage(hWnd, EM_LINEINDEX, wRow, 0); wCol = LOWORD(dw) - wRowStart; return wCol; } void filt01(void) { if(flag01==0 && flag02==0) { int lenmax = GetWindowText( hWnd01, lpStr01, 255); int len01=wCol(); char * p=lpStr01+len01-1; char * p0; int c=len01; int c0; while(c>0) { if(* p==',') { p0=p; c0=c; while(c0>1) { * p0=* (p0-1); p0--; c0--; } * p0=' '; } p--; c--; } SetWindowText( hWnd01,lpStr01); CallWindowProc((WNDPROC)pWnd01,hWnd01,EM_SETSEL,len01,len01); } } LRESULT CALLBACK rtlentry(HWND hWnd,UINT msg,WPARAM wparam,LPARAM lparam) { if(msg==WM_LBUTTONDOWN) { flag01=0; flag02=0; filt01(); } if(msg==WM_KEYDOWN) { if(wparam==VK_CONTROL) { ctrl01=1; } if(wparam==VK_MENU) { alt01=1; } } if(msg==WM_KEYUP) { if(wparam==VK_CONTROL) { ctrl01=0; } if(wparam==VK_MENU) { alt01=0; } } if(ctrl01==0 && alt01==0) { if(msg==WM_KEYUP) { if(wparam==VK_SHIFT) { flag01=0; flag02=0; filt01(); } } if(msg==WM_KEYDOWN) { if(wparam==VK_DELETE) { lastkey=46; flag01=0; flag02=0; filt01(); int lenmax = GetWindowText( hWnd01, lpStr01, 255); int len01=wCol(); if(len01==lenmax) { return 0; } char * p=lpStr01+len01; int c=len01; while(c>0) { * p=* (p-1); p--; c--; } * p=' '; SetWindowText( hWnd01,lpStr01); CallWindowProc((WNDPROC)pWnd01,hWnd01,EM_SETSEL,len01+1,len01+1); return 0; } if(wparam==VK_BACK) { lastkey=8; flag01=0; flag02=0; filt01(); int lenmax = GetWindowText( hWnd01, lpStr01, 255); int len01=wCol(); char * p=lpStr01+len01-1; int c=len01; while(c>1) { * p=* (p-1); p--; c--; } * p=' '; SetWindowText( hWnd01,lpStr01); CallWindowProc((WNDPROC)pWnd01,hWnd01,EM_SETSEL,len01,len01); return 0; } if(wparam==VK_PRIOR) { lastkey=33; HideCaret(NULL); if(rownum==rowmax) { CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_HOME,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_LEFT,lparam); hWnd01=GetFocus(); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_END,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_RIGHT,lparam); } else { CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_END,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_RIGHT,lparam); hWnd01=GetFocus(); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_HOME,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_LEFT,lparam); } ShowCaret(NULL); return 0; } if(wparam==VK_NEXT) { lastkey=34; HideCaret(NULL); if(rownum==rowmax) { CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_HOME,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_LEFT,lparam); hWnd01=GetFocus(); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_END,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_RIGHT,lparam); } else { CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_END,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_RIGHT,lparam); hWnd01=GetFocus(); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_HOME,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_LEFT,lparam); } ShowCaret(NULL); return 0; } if(wparam==VK_RETURN) { lastkey=13; if(colret==colmax && rownum==rowmax) { HideCaret(NULL); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_HOME,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_LEFT,lparam); hWnd01=GetFocus(); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_END,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_RIGHT,lparam); ShowCaret(NULL); return 0; } if(colret==1 && rownum==rowmax && colnum==colmax) { HideCaret(NULL); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_HOME,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_LEFT,lparam); hWnd01=GetFocus(); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_END,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_RIGHT,lparam); ShowCaret(NULL); return 0; } int c=colret; HideCaret(NULL); while(c>0) { hWnd01=GetFocus(); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_END,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_RIGHT,lparam); c--; } ShowCaret(NULL); return 0; } if((wparam==VK_LEFT) && flag02) { lastkey=37; HideCaret(NULL); if(rownum==1 && colnum==1) { CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_END,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_RIGHT,lparam); hWnd01=GetFocus(); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_HOME,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_LEFT,lparam); } else { CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_HOME,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_LEFT,lparam); } ShowCaret(NULL); return 0; } if((wparam==VK_LEFT) && !(flag02)) { lastkey=37; flag01=0; filt01(); if(rownum==1 && colnum==1 && wCol()==0) { HideCaret(NULL); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_END,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_RIGHT,lparam); hWnd01=GetFocus(); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_HOME,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_LEFT,lparam); ShowCaret(NULL); return 0; } } if(wparam==VK_UP) { lastkey=38; if(rownum==1) { HideCaret(NULL); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_END,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_RIGHT,lparam); hWnd01=GetFocus(); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_HOME,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_LEFT,lparam); ShowCaret(NULL); return 0; } HideCaret(NULL); int c=colmax; while(c>0) { hWnd01=GetFocus(); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_HOME,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_LEFT,lparam); c--; } ShowCaret(NULL); return 0; } if((wparam==VK_RIGHT) && flag02) { lastkey=39; HideCaret(NULL); if(rownum==rowmax && colnum==colmax) { CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_HOME,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_LEFT,lparam); hWnd01=GetFocus(); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_END,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_RIGHT,lparam); } else { CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_END,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_RIGHT,lparam); } ShowCaret(NULL); return 0; } if((wparam==VK_RIGHT) && !(flag02)) { lastkey=39; flag01=0; filt01(); if(wCol()==GetWindowTextLength( hWnd01) && rownum==rowmax && colnum==colmax) { HideCaret(NULL); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_HOME,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_LEFT,lparam); hWnd01=GetFocus(); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_END,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_RIGHT,lparam); ShowCaret(NULL); return 0; } } if(wparam==VK_DOWN) { lastkey=40; if(rownum==rowmax) { HideCaret(NULL); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_HOME,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_LEFT,lparam); hWnd01=GetFocus(); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_END,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_RIGHT,lparam); ShowCaret(NULL); return 0; } HideCaret(NULL); int c=colmax; while(c>0) { hWnd01=GetFocus(); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_END,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_RIGHT,lparam); c--; } ShowCaret(NULL); return 0; } } if(msg==WM_CHAR) { flag02=0; if(wparam==VK_BACK) { return 0; } if((wparam>='0' && wparam<='9') || wparam=='-' || wparam=='.' || wparam==',') { char * p=lpStr01; int len01,c; if(flag01) { len01=GetWindowTextLength( hWnd01); if(len01>255) len01=255; c=1; while(c<=len01) { * p=' '; p++; c++; } * p=0; SetWindowText( hWnd01,lpStr01); flag01=0; } filt01(); int lenmax = GetWindowText( hWnd01, lpStr01, 255); p=lpStr01; len01=wCol(); c=1; while(c0) { hWnd01=GetFocus(); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_END,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_RIGHT,lparam); c--; } ShowCaret(NULL); return 0; } if((wparam==VK_LEFT) && flag02) { lastkey=37; HideCaret(NULL); if(rownum==1 && colnum==1) { CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_END,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_RIGHT,lparam); hWnd01=GetFocus(); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_HOME,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_LEFT,lparam); } else { CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_HOME,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_LEFT,lparam); } ShowCaret(NULL); return 0; } if((wparam==VK_LEFT) && !(flag02)) { lastkey=37; if(rownum==1 && colnum==1 && wCol()==0) { HideCaret(NULL); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_END,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_RIGHT,lparam); hWnd01=GetFocus(); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_HOME,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_LEFT,lparam); ShowCaret(NULL); return 0; } } if(wparam==VK_UP) { lastkey=38; if(rownum==1) { HideCaret(NULL); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_END,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_RIGHT,lparam); hWnd01=GetFocus(); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_HOME,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_LEFT,lparam); ShowCaret(NULL); return 0; } HideCaret(NULL); int c=colmax; while(c>0) { hWnd01=GetFocus(); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_HOME,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_LEFT,lparam); c--; } ShowCaret(NULL); return 0; } if((wparam==VK_RIGHT) && flag02) { lastkey=39; HideCaret(NULL); if(rownum==rowmax && colnum==colmax) { CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_HOME,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_LEFT,lparam); hWnd01=GetFocus(); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_END,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_RIGHT,lparam); } else { CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_END,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_RIGHT,lparam); } ShowCaret(NULL); return 0; } if((wparam==VK_RIGHT) && !(flag02) && wCol()==GetWindowTextLength( hWnd01) && rownum==rowmax && colnum==colmax) { lastkey=39; HideCaret(NULL); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_HOME,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_LEFT,lparam); hWnd01=GetFocus(); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_END,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_RIGHT,lparam); ShowCaret(NULL); return 0; } if(wparam==VK_DOWN) { lastkey=40; if(rownum==rowmax) { HideCaret(NULL); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_HOME,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_LEFT,lparam); hWnd01=GetFocus(); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_END,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_RIGHT,lparam); ShowCaret(NULL); return 0; } HideCaret(NULL); int c=colmax; while(c>0) { hWnd01=GetFocus(); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_END,lparam); CallWindowProc((WNDPROC)pWnd01,hWnd01,WM_KEYDOWN,VK_RIGHT,lparam); c--; } ShowCaret(NULL); return 0; } } if(msg==WM_CHAR) { flag02=0; if(wparam==VK_BACK && wCol()==0) { return 0; } // if(wCol()==mojimax && wparam!=VK_BACK) // { // return 0; // } char * p=lpStr01; int len01,c; if(flag01 && wparam!=VK_TAB) { len01=GetWindowTextLength( hWnd01); if(len01>255) len01=255; c=1; while(c<=len01) { * p=' '; p++; c++; } * p=0; SetWindowText( hWnd01,lpStr01); flag01=0; } } } return CallWindowProc((WNDPROC)pWnd01,hWnd01,msg,wparam,lparam); } LRESULT CALLBACK caret01(HWND hWnd,UINT msg,WPARAM wparam,LPARAM lparam) { if(msg==WM_KEYDOWN) { if(wparam==VK_HOME) { int lenmax = GetWindowText( hWnd04, lpStr04, 255); int len00=wCol(); if(len00>0) { CallWindowProc((WNDPROC)pWnd04,hWnd04,WM_KEYDOWN,VK_LEFT,lparam); len00=wCol(); } char * p=lpStr04+len00; while(len00>0 && * p==' ') { CallWindowProc((WNDPROC)pWnd04,hWnd04,WM_KEYDOWN,VK_LEFT,lparam); len00=wCol(); p=lpStr04+len00; } while(len00>0 && * p!=' ') { CallWindowProc((WNDPROC)pWnd04,hWnd04,WM_KEYDOWN,VK_LEFT,lparam); len00=wCol(); p=lpStr04+len00; if(* p==' ') CallWindowProc((WNDPROC)pWnd04,hWnd04,WM_KEYDOWN,VK_RIGHT,lparam); } return 0; } if(wparam==VK_END) { int lenmax = GetWindowText( hWnd04, lpStr04, 255); int len00=wCol(); char * p=lpStr04+len00; int c00=0; while(len00=n+1 && n>0) { memcpy(string01,param1,n+1); } else { * string01='\0'; } free( param1); return string01; } void kbd_dn(int vk_cd) { keybd_event((BYTE)vk_cd, 0, 0, 0); return; } void kbd_up(int vk_cd) { keybd_event((BYTE)vk_cd, 0, KEYEVENTF_KEYUP, 0); return; } char * gettext(char * string01) { char * param1; unsigned int len; unsigned long n; HWND hWnd=GetFocus(); param1 = (char *)calloc(1,255 + 2); n = GetWindowText( hWnd, param1, 255); len=strlen(string01); if (len>=n+1 && n>0) { memcpy(string01,param1,n+1); } else { * string01='\0'; } free( param1); return string01; } long getcaretposx(void) { POINT pos; GetCaretPos( &pos); return pos.x; } long getcaretcol(void) { WORD wRow, wCol, wRowStart; DWORD dw; POINT pos; GetCaretPos( &pos); HWND hWnd=GetFocus(); dw = (DWORD)SendMessage(hWnd, EM_CHARFROMPOS, 0, (LPARAM)MAKELPARAM(pos.x, pos.y)); wRow = HIWORD(dw); wRowStart = (WORD)SendMessage(hWnd, EM_LINEINDEX, wRow, 0); wCol = LOWORD(dw) - wRowStart; return wCol; } char * getversion01(char * string01) { HANDLE hwritepipe01; HANDLE hreadpipe01; SECURITY_ATTRIBUTES sa; sa.nLength = sizeof(sa); sa.bInheritHandle = TRUE; sa.lpSecurityDescriptor = NULL; if( !CreatePipe( &hreadpipe01, &hwritepipe01, &sa, 0)) { * string01='\0'; return string01; } HANDLE hDummy = hreadpipe01; DuplicateHandle( GetCurrentProcess(), hDummy, GetCurrentProcess(), &hreadpipe01, 0, FALSE, DUPLICATE_SAME_ACCESS); CloseHandle( hDummy); PROCESS_INFORMATION pi; STARTUPINFO si; memset( &si, 0, sizeof(si)); si.cb = sizeof(si); si.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW; si.hStdOutput = hwritepipe01; si.wShowWindow = SW_HIDE; char * command01 = "cmd /c ver"; if( !CreateProcess(NULL, command01, NULL, NULL, TRUE, DETACHED_PROCESS, NULL, NULL, &si,&pi)) { * string01='\0'; return string01; } if( pi.hProcess) CloseHandle( pi.hProcess); if( pi.hThread) CloseHandle( pi.hThread); CloseHandle( hwritepipe01); DWORD buffersize = 4096; DWORD totalsize = 0; char * buf00 = (char *)malloc( buffersize); for(;;) { DWORD readsize; BOOL result; result = ReadFile( hreadpipe01, buf00 + totalsize, buffersize - totalsize, &readsize, NULL); if( result == FALSE || readsize == 0) break; totalsize += readsize; if( buffersize - totalsize < 4096) { buffersize += 4096; buf00 = (char *)realloc( buf00, buffersize); } } buf00[totalsize] = '\0'; CloseHandle( hreadpipe01); char * buf = buf00+2; unsigned int n,len; n = strlen(buf); * (buf+n-2) = '\0'; n = n-2; len=strlen(string01); if (len>=n+1 && n>0) { memcpy(string01,buf,n+1); } else { * string01='\0'; } free( buf00); return string01; } void seticon01(char * string01,char * string02) { HICON hIcon; HWND hWnd=GetForegroundWindow(); if ( * string01 != '\0') { hIcon = ExtractIcon( NULL, string01, 0); if(hIcon) { SendMessage(hWnd, WM_SETICON, ICON_SMALL, (long)hIcon); } } // DestroyIcon( hIcon); if ( * string02 != '\0') { SetWindowText( hWnd, string02); } } }