API的问题,如何读取控制台的内容

book_freeboy827 2012-05-03 10:28:17
首先我打开一个控制台,
然后写一个程序来读取控制台的内容,请问如何实现,谢谢大家的回复
...全文
197 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
book_freeboy827 2012-05-03
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

引用 9 楼 的回复:

引用 8 楼 的回复:

引用 7 楼 的回复:

首先我打开一个控制台,
然后写一个程序来读取控制台的内容,

你得先找到那个控制台的句柄,可以使用PInvoke的FindWindow根据标题获取句柄值,然后用GetWindowThreadProcessId根据窗口句柄值转化为进程ID,接下来就和我上面给的代码一致了
单纯用C#是无法解决的,……
[/Quote]
假设我已经知道了进程ID,然后如何做呢,
121959565能否加QQ,指点下,谢谢
蔡袅 2012-05-03
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

引用 8 楼 的回复:

引用 7 楼 的回复:

首先我打开一个控制台,
然后写一个程序来读取控制台的内容,

你得先找到那个控制台的句柄,可以使用PInvoke的FindWindow根据标题获取句柄值,然后用GetWindowThreadProcessId根据窗口句柄值转化为进程ID,接下来就和我上面给的代码一致了
单纯用C#是无法解决的,还得Invoke 核心dll导出……
[/Quote]进程ID,你下次启动又变了,得通过窗体Title的不变找到对应的Process ID
book_freeboy827 2012-05-03
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

引用 7 楼 的回复:

首先我打开一个控制台,
然后写一个程序来读取控制台的内容,

你得先找到那个控制台的句柄,可以使用PInvoke的FindWindow根据标题获取句柄值,然后用GetWindowThreadProcessId根据窗口句柄值转化为进程ID,接下来就和我上面给的代码一致了
单纯用C#是无法解决的,还得Invoke 核心dll导出的函数
[/Quote]
有点不理解啊
进程ID我知道了,然后如何做呢,谢谢
蔡袅 2012-05-03
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

首先我打开一个控制台,
然后写一个程序来读取控制台的内容,

你得先找到那个控制台的句柄,可以使用PInvoke的FindWindow根据标题获取句柄值,然后用GetWindowThreadProcessId根据窗口句柄值转化为进程ID,接下来就和我上面给的代码一致了
[/Quote]单纯用C#是无法解决的,还得Invoke 核心dll导出的函数
蔡袅 2012-05-03
  • 打赏
  • 举报
回复
首先我打开一个控制台,
然后写一个程序来读取控制台的内容,

你得先找到那个控制台的句柄,可以使用PInvoke的FindWindow根据标题获取句柄值,然后用GetWindowThreadProcessId根据窗口句柄值转化为进程ID,接下来就和我上面给的代码一致了
book_freeboy827 2012-05-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

类似这样:
C# code
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName="cmd.exe";
psi.Arguments="/c ping www.163.com";
psi.RedirectStandardOutput=true;
ps……
[/Quote]
跨进程的
book_freeboy827 2012-05-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

类似这样:
C# code
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName="cmd.exe";
psi.Arguments="/c ping www.163.com";
psi.RedirectStandardOutput=true;
ps……
[/Quote]
是跨进程的啊
蔡袅 2012-05-03
  • 打赏
  • 举报
回复
类似这样:
    ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName="cmd.exe";
psi.Arguments="/c ping www.163.com";
psi.RedirectStandardOutput=true;
psi.UseShellExecute=false;
Process p = new Process();
p.StartInfo= psi;
p = Process.Start(psi);
StreamReader ms = p.StandardOutput;
p.WaitForExit();
string s = ms.ReadToEnd();
Console.WriteLine(s);
Console.Read();
book_freeboy827 2012-05-03
  • 打赏
  • 举报
回复
两个单独的程序

跨进程的
humin332 2012-05-03
  • 打赏
  • 举报
回复
意思描述不清楚!
bdmh 2012-05-03
  • 打赏
  • 举报
回复
是跨进程的还是你自己用process打开的

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧