⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_65378.htm

📁 vc
💻 HTM
字号:
<p>
序号:65378 发表者:badboy 发表日期:2003-12-17 13:04:07
<br>主题:在控制台下,如何可以随时控制程序暂停和执行?
<br>内容:下面的程序将会一直打印main thread is running!字符串。我想,在键盘上控制这个输出。就是,当敲击某个键上,执行结果输出就暂停了(即主线程暂停了),当再敲击这个键上,程序继续执行(即主线程恢复执行)。反复如此。<BR>&nbsp;&nbsp;&nbsp;&nbsp;最好,是敲击那个键时,屏幕不显示被敲击的键的符号!<BR>&nbsp;&nbsp; 顺便问一下,控制台下,主线程的句柄怎么得到?<BR><BR>#include &#34;iostream.h&#34;<BR>void main()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;bool TRUE=true;<BR>&nbsp;&nbsp;&nbsp;&nbsp;while(TRUE)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;&#34;main thread is running!&#34;&lt;&lt;endl;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>}
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:zzjhsj 回复日期:2003-12-17 13:36:52
<br>内容:<BR>bool e=true;<BR>void thread1(void*thrd_id)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;HANDLE th=OpenThread(THREAD_SUSPEND_RESUME,FALSE,(DWORD)thrd_id);<BR>&nbsp;&nbsp;&nbsp;&nbsp;SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_ABOVE_NORMAL );<BR>&nbsp;&nbsp;&nbsp;&nbsp;for(;;)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(getch()=='s')<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(e=!e)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ResumeThread(th);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SuspendThread(th);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>}<BR><BR>void main()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;_beginthread(thread1,1024,(void*)GetCurrentThreadId());<BR>&nbsp;&nbsp;&nbsp;&nbsp;while(true)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;&#34;main thread is running!&#34;&lt;&lt;endl;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>} <BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:badboy 回复日期:2003-12-17 16:55:34
<br>内容:高手!您学的真好,真佩服!<BR><BR>&nbsp;&nbsp;HANDLE th=OpenThread(THREAD_SUSPEND_RESUME,FALSE,(DWORD)thrd_id);<BR><BR>&nbsp;&nbsp; 这个函数,我怎么找不到,编译不通过!<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;这个函数应该就是获得主线程的句柄的吧?<BR><BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp; 
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:badboy 回复日期:2003-12-17 19:09:14
<br>内容: //我知道了,您可能误写了,那个函数应该应该是<BR>//HANDLE th=OpenProcess(THREAD_SUSPEND_RESUME,FALSE,(DWORD)thrd_id);<BR>//不过,高手,不行啊!看代码似乎满足要求,主线程执行起来还是控制不住。<BR><BR>#include &#34;iostream.h&#34;<BR>#include &#34;process.h&#34;<BR>#include &#34;windows.h&#34;<BR>#include &#34;conio.h&#34;<BR>bool e=true;<BR>void thread1(void*thrd_id)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;HANDLE th=OpenProcess(THREAD_SUSPEND_RESUME,FALSE,(DWORD)thrd_id);<BR>&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;HANDLE th=GetCurrentProcess();<BR>&nbsp;&nbsp;&nbsp;&nbsp;SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_ABOVE_NORMAL );<BR>&nbsp;&nbsp;&nbsp;&nbsp;for(;;)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(getch()=='s')<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(e=!e)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ResumeThread(th);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SuspendThread(th);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>}<BR>void main()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;_beginthread(thread1,1024,(void*)GetCurrentThreadId());<BR>&nbsp;&nbsp;&nbsp;&nbsp;while(true)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;&#34;main thread is running!&#34;&lt;&lt;endl;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>}
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:zzjhsj 回复日期:2003-12-18 10:20:32
<br>内容:openthread 需要 win2000 or winme<BR>看这个<BR>bool e=1;<BR>void thread1(void*thrd_id)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;HANDLE th=thrd_id;<BR>//&nbsp;&nbsp;&nbsp;&nbsp;SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_ABOVE_NORMAL);<BR>&nbsp;&nbsp;&nbsp;&nbsp;for(;;)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(getch()=='s')<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(e=!e)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ResumeThread(th);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SuspendThread(th);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>}<BR><BR>void main()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;HANDLE hcur;<BR>&nbsp;&nbsp;&nbsp;&nbsp;DuplicateHandle(GetCurrentProcess(),GetCurrentThread(),GetCurrentProcess(),&amp;hcur,NULL,FALSE,DUPLICATE_SAME_ACCESS);<BR>&nbsp;&nbsp;&nbsp;&nbsp;_beginthread(thread1,1024,hcur);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;while(TRUE)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;&#34;main thread is running!&#34;&lt;&lt;endl;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>} <BR><BR>2003-12-18 10:26:23

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -