日期:2014-05-20  浏览次数:21002 次

帮我看一下,我自己都搞迷糊返回的是什么了?
public   void   game()
                {
                        int   proID,proid1;
                        proID   =   OpenProcess( "PROCESS_VM_READ ",   false,   Phandle);//它返回的是什么,我得到的总是0?
                        //textBox2.Text   =   proID.ToString();
                        proid1   =   GetWindowThreadProcessId(Phandle,null);//它有返回值,可的返回的是进程ID,还是线程ID,或是哪个的句柄??
                        //textBox3.Text   =   proid1.ToString();
                }

                private   void   timer1_Tick(object   sender,   EventArgs   e)
                {
                        Phandle   =   FindWindow( "SciCalc ",   null);
                        if   (Phandle   !=   0)
                        {
                                label1.Text   =   "计算器运行! ";
                                game();
                                textBox1.Text   =   Phandle.ToString();
                               
                        }
                        else
                        {
                                label1.Text   =   "计算器未运行! ";
                                                        }
                }

------解决方案--------------------
PROCESS_VM_READ
不是文本 ,有关是数值常量啊
------解决方案--------------------
const int PROCESS_VM_READ = 16;


现在的人们要求越来越高!事情还是十画还没有一撇,就要源码!

------解决方案--------------------
PROCESS_VM_READ是常量,值为0x10,也就是16,不是字符串
OpenProcess成功的话返回process的句柄,否则返回null
GetWindowThreadProcessId返回的是线程ID,第二个参数是接收进程ID的
MSDN上都有。。。
------解决方案--------------------
[DllImport( "User32.dll ", EntryPoint = "GetWindowThreadProcessId ")]
private static extern int GetWindowThreadProcessId(int hWnd, ref int ProcessId);

int pid = 0;