亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tut21.html

?? WINDOWS程序員使用指南--匯編基礎
?? HTML
?? 第 1 頁 / 共 3 頁
字號:
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.if eax==NULL</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
invoke MessageBox,hWnd,addr CreateProcessError,addr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
AppName,MB_ICONERROR+MB_OK</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.else</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
invoke CloseHandle,hWrite</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.while TRUE</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
invoke RtlZeroMemory,addr buffer,1024</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
invoke ReadFile,hRead,addr buffer,1023,addr bytesRead,NULL</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.if eax==NULL</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.break</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.endif</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
invoke SendMessage,hwndEdit,EM_SETSEL,-1,0</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
invoke SendMessage,hwndEdit,EM_REPLACESEL,FALSE,addr buffer</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.endw</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.endif</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
invoke CloseHandle,hRead</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.endif</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.endif</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.endif</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;
.elseif uMsg==WM_DESTROY</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
invoke PostQuitMessage,NULL</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;
.else</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
invoke DefWindowProc,hWnd,uMsg,wParam,lParam ret</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;
.endif</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;
xor eax,eax</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;
ret</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>WndProc endp</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>end start</font></font></font></b></blockquote>

<h3>
<font face="Arial"><font size=+0>Analysis:</font></font></h3>
<font face="Arial"><font size=-1>The example will call ml.exe to assemble
a file named test.asm and redirect the output of ml.exe to the edit control
in its client area.</font></font>
<br><font face="Arial"><font size=-1>When the program is loaded, it registers
the window class and creates the main window as usual. The first thing
it does during main window creation is to create an edit control which
will be used to display the output of ml.exe.</font></font>
<br><font face="Arial"><font size=-1>Now the interesting part, we will
change the text and background color of the edit control. When an edit
control is going to paint its client area, it sends WM_CTLCOLOREDIT message
to its parent.</font></font>
<br><font face="Arial"><font size=-1>wParam contains the handle to the
device context that the edit control will use to write its own client area.
We can use this opportunity to modify the characteristics of the HDC.</font></font>
<blockquote><b><font face="Arial"><font size=-1>&nbsp;&nbsp;&nbsp; <font color="#999900">.elseif
uMsg==WM_CTLCOLOREDIT</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
invoke SetTextColor,wParam,Yellow</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
invoke SetTextColor,wParam,Black</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
invoke GetStockObject,BLACK_BRUSH</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ret</font></font></font></b></blockquote>
<font face="Arial"><font size=-1>SetTextColor changes the text color to
yellow. SetTextColor changes the background color of the text to black.
And lastly, we obtain the handle to the black brush which we return to
Windows. With WM_CTLCOLOREDIT message, you must return a handle to a brush
which Windows will use to paint the background of the edit control. In
our example, I want the background to be black so I return the handle to
the black brush to Windows.</font></font>
<br><font face="Arial"><font size=-1>Now when the user selects <font color="#FFFF00">Assemble</font>
menuitem, it creates an anonymous pipe.</font></font>
<p><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.if ax==IDM_ASSEMBLE</font></font></font></b>
<br>
  <b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  mov sat.nLength,sizeof SECURITY_ATTRIBUTES</font></font></font></b> <br>
  <b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov sat.lpSecurityDescriptor,NULL</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov sat.bInheritHandle,TRUE</font></font></font></b>
<p><font face="Arial"><font size=-1>Prior to calling CreatePipe, we must
fill the SECURITY_ATTRIBUTES structure first. Note that we can use NULL
in lpSecurityDescriptor member if we don't care about security. And the
bInheritHandle member must be TRUE so that the pipe handles are inheritable
to the child process.</font></font>
<p><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
invoke CreatePipe,addr hRead,addr hWrite,addr sat,NULL</font></font></font></b>
<p><font face="Arial"><font size=-1>&nbsp;After that, we call CreatePipe
which, if successful, will fill hRead and hWrite variables with the handles
to read and write ends of the pipe respectively.</font></font>
<p><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov startupinfo.cb,sizeof STARTUPINFO</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
invoke GetStartupInfo,addr startupinfo</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov eax, hWrite</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov startupinfo.hStdOutput,eax</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov startupinfo.hStdError,eax</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov startupinfo.dwFlags, STARTF_USESHOWWINDOW+ STARTF_USESTDHANDLES</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov startupinfo.wShowWindow,SW_HIDE</font></font></font></b>
<p><font face="Arial"><font size=-1>Next we must fill the STARTUPINFO structure.
We call GetStartupInfo to fill the STARTUPINFO structure with default values
of the parent process. You MUST fill the STARTUPINFO structure with this
call if you intend your code to work under both win9x and NT. After GetStartupInfo
call returns, you can modify the members that are important. We copy the
handle to the write end of the pipe into hStdOutput and hStdError since
we want the child process to use it instead of the default standard output/error
handles. We also want to hide the console window of the child process,
so we put SW_HIDE value into wShowWidow member. And lastly, we must indicate
that hStdOutput, hStdError and wShowWindow members are valid and must be
used by specifying the flags STARTF_USESHOWWINDOW and STARTF_USESTDHANDLES
in dwFlags member.</font></font>
<p><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
invoke CreateProcess, NULL, addr CommandLine, NULL, NULL, TRUE, NULL, NULL,
NULL, addr startupinfo, addr pinfo</font></font></font></b>
<p><font face="Arial"><font size=-1>We now create the child process with
CreateProcess call. Note that the bInheritHandles parameter must be set
to TRUE for the pipe handle to work.</font></font>
<p><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
invoke CloseHandle,hWrite</font></font></font></b>
<p><font face="Arial"><font size=-1>After we successfully create the child
process, we must close the write end of the pipe. Remember that we passed
the write handle to the child process via STARTUPINFO structure. If we
don't close the write handle from our end, there will be two write ends.
And that the pipe will not work. We must close the write handle after CreateProcess
but before we read data from the read end of the pipe.</font></font>
<p><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.while TRUE</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
invoke RtlZeroMemory,addr buffer,1024</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
invoke ReadFile,hRead,addr buffer,1023,addr bytesRead,NULL</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.if eax==NULL</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.break</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.endif</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
invoke SendMessage,hwndEdit,EM_SETSEL,-1,0</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
invoke SendMessage,hwndEdit,EM_REPLACESEL,FALSE,addr buffer</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.endw</font></font></font></b>
<p><font face="Arial"><font size=-1>Now we are ready to read the data from
the standard output of the child process. We will stay in an infinite loop
until there are no more data left to read from the pipe. We call RtlZeroMemory
to fill the buffer with zeroes then call ReadFile, passing the read handle
of the pipe in place of a file handle. Note that we only read a maximum
of 1023 bytes since we need the data to be an ASCIIZ string which we can
pass on to the edit control.</font></font>
<br><font face="Arial"><font size=-1>When ReadFile returns with the data
in the buffer, we fill the data into the edit control. However, there is
a slight problem here. If we use SetWindowText to put the data into the
edit control, the new data will overwrite existing data! We want the data
to append to the end of the existing data.</font></font>
<br><font face="Arial"><font size=-1>To achieve that goal, we first move
the caret to the end of the text in the edit control by sending EM_SETSEL
message with wParam==-1. Next, we append the data at that point with EM_REPLACESEL
message.</font></font>
<p><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
invoke CloseHandle,hRead</font></font></font></b>
<p><font face="Arial"><font size=-1>When ReadFile returns NULL, we break
out of the loop and close the read handle.</font></font>
<br>
<hr WIDTH="100%">
<center><b><a href="http://win32asm.cjb.net" style="text-decoration:none">Iczelion's
Win32 Assembly Homepage</a></b></center>

</body>
</html>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美国产毛片在线| 一区二区三区在线视频免费| 97精品久久久久中文字幕| 亚洲高清免费在线| 国产日韩精品一区| 91精品在线免费| 91影视在线播放| 精品伊人久久久久7777人| 一区二区三区四区不卡视频| 久久综合狠狠综合| 9191精品国产综合久久久久久 | 亚洲欧洲精品一区二区三区| 欧美日韩夫妻久久| 99视频精品在线| 国产伦精品一区二区三区视频青涩 | 99久久免费视频.com| 麻豆成人91精品二区三区| 亚洲欧美aⅴ...| 国产精品欧美一区喷水| 精品国产区一区| 欧美一卡2卡三卡4卡5免费| 色菇凉天天综合网| 91片黄在线观看| 成人av综合一区| 国产露脸91国语对白| 狂野欧美性猛交blacked| 香蕉成人啪国产精品视频综合网| 国产精品成人免费| 中文幕一区二区三区久久蜜桃| 欧美一级欧美一级在线播放| 欧美性一二三区| 在线观看一区不卡| 欧美在线999| 欧美性生活一区| 欧美三级蜜桃2在线观看| 91国偷自产一区二区开放时间| 99久久久久久| 91免费观看国产| 91麻豆国产在线观看| 94-欧美-setu| 色香蕉久久蜜桃| 欧美亚洲一区二区在线| 色婷婷国产精品| 欧美视频精品在线观看| 欧美精品九九99久久| 欧美一级二级三级蜜桃| 日韩欧美在线1卡| 2021久久国产精品不只是精品| 欧美成人精品3d动漫h| 久久综合久久综合九色| 久久久久久久久久久99999| 欧美国产乱子伦| 亚洲免费观看在线观看| 亚洲成人在线免费| 日本少妇一区二区| 国产一区欧美日韩| av在线不卡网| 一本色道久久综合亚洲91| 欧美美女一区二区三区| 欧美va亚洲va| 中文字幕一区二区在线观看| 伊人夜夜躁av伊人久久| 日本亚洲最大的色成网站www| 久久99精品网久久| 成人高清视频免费观看| 欧洲一区二区三区免费视频| 在线播放视频一区| 国产性做久久久久久| 综合久久久久久| 丝袜国产日韩另类美女| 韩国在线一区二区| 在线亚洲免费视频| 精品免费一区二区三区| 国产精品毛片a∨一区二区三区| 亚洲成人黄色影院| 国产精品自拍毛片| 欧美天堂一区二区三区| 久久久国产精品午夜一区ai换脸| 亚洲美女视频在线| 黑人巨大精品欧美黑白配亚洲| 99精品欧美一区二区蜜桃免费| 91精品婷婷国产综合久久| 国产欧美日韩久久| 日韩黄色在线观看| av日韩在线网站| 欧美一区二区在线免费观看| 中文在线资源观看网站视频免费不卡| 亚洲精品欧美二区三区中文字幕| 免费在线欧美视频| 91在线视频网址| 久久一区二区视频| 亚洲大片一区二区三区| 国产69精品久久久久777| 欧美日韩久久久一区| 国产精品视频麻豆| 黄网站免费久久| 欧美日韩一区二区电影| 国产精品美女久久福利网站| 久久精品国产一区二区| 在线免费精品视频| 国产精品久久久久久妇女6080| 久久精品99久久久| 欧美调教femdomvk| 亚洲免费在线电影| eeuss影院一区二区三区| 精品免费视频一区二区| 日韩高清欧美激情| 欧美日韩一级片网站| 亚洲日本va在线观看| 国产成人在线观看免费网站| 欧美一区在线视频| 亚洲福利视频一区| 91蜜桃传媒精品久久久一区二区| 久久久五月婷婷| 日本aⅴ亚洲精品中文乱码| 欧美在线看片a免费观看| 成人免费在线视频观看| 高清免费成人av| 久久免费美女视频| 久久se精品一区精品二区| 欧美巨大另类极品videosbest| 国产精品乱码一区二区三区软件 | wwwwww.欧美系列| 五月天一区二区| 在线视频国内自拍亚洲视频| 国产精品国产三级国产aⅴ入口| 久久超级碰视频| 精品国产乱码久久久久久浪潮| 亚洲午夜久久久久久久久电影院 | 岛国精品在线播放| 久久午夜免费电影| 国产美女精品一区二区三区| 日韩三级av在线播放| 日本不卡在线视频| 欧美一区二区三区不卡| 欧美aaa在线| 日韩久久久久久| 蜜桃av一区二区三区| 日韩欧美国产麻豆| 精品一区二区三区在线观看| 精品国产91洋老外米糕| 国产在线国偷精品免费看| 久久亚区不卡日本| 成人黄色一级视频| 日韩伦理av电影| 在线区一区二视频| 亚洲一区在线电影| 欧美电影影音先锋| 免费高清在线一区| 精品国产91久久久久久久妲己| 国产一区二区视频在线播放| 国产日产欧产精品推荐色 | 六月丁香综合在线视频| 中文字幕一区av| 不卡视频在线看| 一区二区三区在线观看国产| 欧美日韩一二区| 韩国成人福利片在线播放| 国产精品视频yy9299一区| 91一区二区在线观看| 亚洲二区视频在线| 久久一夜天堂av一区二区三区| 成人午夜激情片| 亚洲国产aⅴ天堂久久| 久久亚洲一级片| 色偷偷88欧美精品久久久| 日本中文字幕一区二区视频| xfplay精品久久| 一本色道亚洲精品aⅴ| 欧美a一区二区| 亚洲视频中文字幕| 日韩欧美国产1| 成人免费视频一区| 亚洲国产精品久久久久婷婷884| 日韩欧美你懂的| 色哟哟在线观看一区二区三区| 蜜臀久久久99精品久久久久久| 中文字幕久久午夜不卡| 欧美日免费三级在线| 精品一区在线看| 亚洲国产综合人成综合网站| 欧美sm极限捆绑bd| 91在线观看下载| 麻豆精品一区二区| 日韩毛片视频在线看| 亚洲精品一线二线三线无人区| 91视频国产观看| 国产电影精品久久禁18| 性做久久久久久免费观看| 亚洲欧美成aⅴ人在线观看| 欧美一区二区三区成人| 99精品视频一区| 国产乱理伦片在线观看夜一区| 亚欧色一区w666天堂| 自拍视频在线观看一区二区| 精品入口麻豆88视频| 色哟哟国产精品免费观看| 国产福利精品一区| 精品中文字幕一区二区小辣椒| 亚洲永久精品大片|