Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 包含适用于memory.dll c的进程的组合框#_C#_Windows_Visual Studio_Process - Fatal编程技术网

C# 包含适用于memory.dll c的进程的组合框#

C# 包含适用于memory.dll c的进程的组合框#,c#,windows,visual-studio,process,C#,Windows,Visual Studio,Process,我知道有一个类似的问题,但是先读一读 我使用的是Windows10x64 我正在用c#with memory.dll写一些东西,所以我想显示进程,然后在用户选择的进程中用memory.dll写一个值 public partial class Form1 : Form { public Mem m = new Mem(); public Form1() { InitializeComponent();

我知道有一个类似的问题,但是先读一读

我使用的是Windows10x64

我正在用c#with memory.dll写一些东西,所以我想显示进程,然后在用户选择的进程中用memory.dll写一个值

public partial class Form1 : Form
    {
        public Mem m = new Mem();
        
        public Form1()
        {
            InitializeComponent();
            loadprocess();
        }


private void loadprocess()
        {
            comboBox1.Items.Clear();
            Process[] MyProcess = Process.GetProcesses();
            for (int i = 0; i < MyProcess.Length; i++)
                comboBox1.Items.Add(MyProcess[i].ProcessName + "-" + MyProcess[i].Id);
        }

private void timerDontCamera_Tick(object sender, EventArgs e)
        {
            m.OpenProcess(Process.GetProcessesByName(comboBox1.SelectedValue.ToString()).FirstOrDefault().Id);
            m.WriteMemory("zVideoUI.dll+003BED80,68,E4", "byte", "1");
        }
它引发异常:System.NullReferenceException:“对象引用未设置为对象的实例。”


System.Windows.Forms.ListControl.SelectedValue.get返回空值。

根据我的测试,我重现了您的问题

首先,我建议您使用
comboBox1.SelectedItem
替换
comboBox1.SelectedValue

其次,如果我们想使用
process.getProcessByName
方法,我们应该获取进程名。但是,您的
组合框
所选项目应该是
processname
+
process.id

最后,您可以尝试以下代码来获得正确的Id

public Form1()
        {
            InitializeComponent();
            loadprocess();
            timer1.Interval = 1000;
        }


        private void loadprocess()
        {
            comboBox1.Items.Clear();
            Process[] MyProcess = Process.GetProcesses();
            for (int i = 0; i < MyProcess.Length; i++)
            {
                comboBox1.Items.Add(MyProcess[i].ProcessName + "-" + MyProcess[i].Id);
            }
        
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
        string processname = comboBox1.SelectedItem.ToString().Split('-').First();
        string id = comboBox1.SelectedItem.ToString().Split('-').Last();
        var process = Process.GetProcessesByName(processname).Where(i=>i.Id==Convert.ToInt32(id)).First();
        Console.WriteLine(process.Id);
        m.OpenProcess(process.Id);
        }
public Form1()
{
初始化组件();
loadprocess();
计时器1。间隔=1000;
}
私有void loadprocess()
{
comboBox1.Items.Clear();
Process[]MyProcess=Process.getprocesss();
for(int i=0;ii.Id==Convert.ToInt32(Id)).First();
Console.WriteLine(process.Id);
m、 OpenProcess(process.Id);
}
对其进行测试:


我不知道该怎么办,因为我知道有3个进程同名,在作弊引擎中,我选择了一个正确的进程,它向我显示了值,但这个c表示找不到值,这意味着它正在使用其他两个同名进程中的一个name@Jos安东尼奥,似乎您希望基于组合框找到相应的进程。我已经更新了我的代码,你可以试一试。我已经检查过了,我几乎肯定combobox不会显示同名的进程,因为我一直在搜索,我找不到另一个进程,而作弊引擎没有任何问题。如果我尝试出现在那里的进程,它会说我的指针找不到更多,我发现这两个进程都在那里,但它说它没有找到我的指针,而作弊引擎却找到了我的指针。这是我的错,我的项目必须是x86,我尝试了没有你的代码,它不工作,所以你的回答很有帮助,谢谢。
public Form1()
        {
            InitializeComponent();
            loadprocess();
            timer1.Interval = 1000;
        }


        private void loadprocess()
        {
            comboBox1.Items.Clear();
            Process[] MyProcess = Process.GetProcesses();
            for (int i = 0; i < MyProcess.Length; i++)
            {
                comboBox1.Items.Add(MyProcess[i].ProcessName + "-" + MyProcess[i].Id);
            }
        
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
        string processname = comboBox1.SelectedItem.ToString().Split('-').First();
        string id = comboBox1.SelectedItem.ToString().Split('-').Last();
        var process = Process.GetProcessesByName(processname).Where(i=>i.Id==Convert.ToInt32(id)).First();
        Console.WriteLine(process.Id);
        m.OpenProcess(process.Id);
        }