HemersonKl Ответов: 1

C# как автоматически найти pid без использования combobox?


Всем привет, не могли бы вы мне помочь?
Я хотел бы использовать кнопку вместо combobox. Таким образом, я мог бы нажать на кнопку, и она автоматически будет выглядеть, если браузер открыт, и спросить pid. Нет необходимости выбирать его в выпадающем списке. Как я мог это осуществить?

Что я уже пробовал:

<pre>public void comboBox1_TextChanged(object sender, EventArgs e)
        {

           
            if (this.comboBox1.Text == "Chrome")
            {
                int pid = browser.Chrome();



                if (pid > 0)
                {
                    Aobscan.OpenProcessid(pid);




                    label1.Text = "Google Chrome = PID " + pid + "--" + BIT64.Text;
                }
                else
                {
                    label1.Text = "Error! Chrome Game open?";
                    Aobscan.processhandle = IntPtr.Zero;
                }
            }

            if (this.comboBox1.Text == "Opera")
            {
                int pid = browser.Opera();
                if (pid > 0)
                {
                    Aobscan.OpenProcessid(pid);
                    label1.Text = "Opera = PID " + pid + "--" + BIT64.Text;
                }
                else
                {
                    label1.Text = "Failed To Attached Opera";
                    Aobscan.processhandle = IntPtr.Zero;
                }
            }

            if (this.comboBox1.Text == "FacebookGameroom")
            {
                int pid = browser.Gameroom_Flash();
                if (pid > 0)
                {
                    Aobscan.OpenProcessid(pid);
                    label1.Text = "FBGameroom = PID " + pid + "--" + BIT64.Text;
                }
                else
                {
                    label1.Text = "Failed To Attached Gameroom_Flash";
                    Aobscan.processhandle = IntPtr.Zero;
                }


            }

            if (this.comboBox1.Text == "Firefox")
            {
                int pid = browser.Firefox_Flash();
                if (pid > 0)
                {
                    Aobscan.OpenProcessid(pid);
                    label1.Text = "Firefox_Flash = PID " + pid + "--" + BIT64.Text;
                }
                else
                {
                    label1.Text = "Failed To Attached Firefox_Flash";
                    Aobscan.processhandle = IntPtr.Zero;
                }

            }
<pre>using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;
using System.Diagnostics;
namespace Trainer_C3
{
    class GetBrowser
    {
        
        [DllImport("kernel32.dll", SetLastError = true)]
        static public extern bool CloseHandle(IntPtr hHandle);

        [DllImport("kernel32.dll")]
        static public extern bool Module32First(IntPtr hSnapshot, ref MODULEENTRY32 lpme);

        [DllImport("kernel32.dll")]
        static public extern bool Module32Next(IntPtr hSnapshot, ref MODULEENTRY32 lpme);

        [DllImport("kernel32.dll", SetLastError = true)]
        static public extern IntPtr CreateToolhelp32Snapshot(SnapshotFlags dwFlags, uint th32ProcessID);

        public const short INVALID_HANDLE_VALUE = -1;

        [Flags]
        public enum SnapshotFlags : uint
        {
            HeapList = 0x00000001,
            Process = 0x00000002,
            Thread = 0x00000004,
            Module = 0x00000008,
            Module32 = 0x00000010,
            Inherit = 0x80000000,
            All = 0x0000001F
        }

        [StructLayoutAttribute(LayoutKind.Sequential)]
        public struct MODULEENTRY32
        {
            public uint dwSize;
            public uint th32ModuleID;
            public uint th32ProcessID;
            public uint GlblcntUsage;
            public uint ProccntUsage;
            IntPtr modBaseAddr;
            public uint modBaseSize;
            IntPtr hModule;
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
            public string szModule;
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
            public string szExePath;
        };

        static List<string> EnumProcessModules(uint procIDDDDDDDDDDDDD)
        {
            List<string> modules = new List<string>();

            var snapshot = CreateToolhelp32Snapshot(SnapshotFlags.Module | SnapshotFlags.Module32, procIDDDDDDDDDDDDD);
            MODULEENTRY32 mod = new MODULEENTRY32() { dwSize = (uint)Marshal.SizeOf(typeof(MODULEENTRY32)) };
            if (!Module32First(snapshot, ref mod))
                return modules;

            do
            {
                //     Console.WriteLine(mod.szModule);
                modules.Add(mod.szModule);
            }
            while (Module32Next(snapshot, ref mod));
            return modules;
        }

        public int Chrome()
        {
            Process[] chrome = Process.GetProcessesByName("chrome");
            foreach (Process subchrome in chrome)

            {
                List<string> modules = EnumProcessModules((uint)subchrome.Id);
                foreach (string submodule in modules)
                {
           //         Console.WriteLine(submodule);
                    if (submodule.Contains("pepflashplayer"))
                    {
                   //     MessageBox.Show("Chrome Flash :" + subchrome.Id.ToString());

                        return subchrome.Id;
                        
                    }
                }
            }
              return 0;
        }
        public int Firefox_Flash()
        {
            Process[] chrome = Process.GetProcesses();
            int id = 0;
            foreach (Process subchrome in chrome)

            {
                
                if (subchrome.ProcessName.Contains("FlashPlayerPlugin"))
                {
                    id= subchrome.Id;

                }
            }
            return id;
            
        }

        public int Edge_Flash()
        {
            Process[] chrome = Process.GetProcesses();
            int id = 0;
            foreach (Process subchrome in chrome)
            {
                if (subchrome.ProcessName.Contains("MicrosoftEdgeCP"))
                {
                    List<string> modules = EnumProcessModules((uint)subchrome.Id);
                    foreach (string submodule in modules)
                    {
                        //Console.WriteLine(submodule);
                        if (submodule.Contains("Flash"))
                        {
                            //     MessageBox.Show("Chrome Flash :" + subchrome.Id.ToString());

                            return subchrome.Id;

                        }
                    }
                }
            }
            return id;
        }
        public int Opera()
        {
            Process[] chrome = Process.GetProcessesByName("opera");
            foreach (Process subchrome in chrome)
            {
             
                    List<string> modules = EnumProcessModules((uint)subchrome.Id);
                    foreach (string submodule in modules)
                    {
                        //    Console.WriteLine(submodule);
                        if (submodule.Contains("pepflashplayer"))
                        {
                            //     MessageBox.Show("Chrome Flash :" + subchrome.Id.ToString());

                            return subchrome.Id;

                        }
                   
                }
            }
            return 0;
        }
        public int Firefox_Unity()
        {
            try
            {
                Process chrome = Process.GetProcessesByName("plugin-container")[0];
                return chrome.Id;
            }catch
            {
                return 0;
            }
        }
        public int Gameroom_Flash()
        {
            Process[] chrome = Process.GetProcessesByName("Facebook Gameroom Browser");
            foreach (Process subchrome in chrome)
            {
                List<string> modules = EnumProcessModules((uint)subchrome.Id);
                foreach (string submodule in modules)
                {
           //         Console.WriteLine(submodule);
                    if (submodule.Contains("fenix"))
                    {
                        //     MessageBox.Show("Chrome Flash :" + subchrome.Id.ToString());

                        return subchrome.Id;

                    }
                }
            }
            return 0;
        
    }

     public int Mustang()
        {
            Process[] mustang = Process.GetProcessesByName("mustang");
            foreach (Process subchrome in mustang)
            {
                List<string> modules = EnumProcessModules((uint)subchrome.Id);
                foreach (string submodule in modules)
                {
           //         Console.WriteLine(submodule);
                    if (submodule.Contains("pepflashplayer"))
                    {
                   //     MessageBox.Show("Chrome Flash :" + subchrome.Id.ToString());

                        return subchrome.Id;
                        
                    }
                }
            }
              return 0;
        }

}
}

Richard Deeming

Вы ищете Процесс.GetProcessesByName[^]?

HemersonKl

Привет. Я забыл другую часть сценария. - Добавил Я в вопрос. Я мало что знаю о с #

1 Ответов

Рейтинг:
5

RickZeeland

Поместите кнопку на свою форму и дважды щелкните по ней, в сгенерированном коде нажатия кнопки поместите следующий код:

int pid = browser.Chrome();

if (pid > 0)
{
	Aobscan.OpenProcessid(pid);
	label1.Text = "Google Chrome = PID " + pid + "--" + BIT64.Text;
}
else
{
	pid = browser.Opera();

	if (pid > 0)
	{
		Aobscan.OpenProcessid(pid);
		label1.Text = "Opera = PID " + pid + "--" + BIT64.Text;
	}
	else
	{
		// etcetera for all browsers ...
	}
]
Однако было бы более эффективно сначала протестировать процесс.GetProcessesByName ("browsername"); если браузер существует, а затем вызовите функцию.


HemersonKl

Здравствуйте, спасибо, что ответили. Это сработало. Я хотел, чтобы он был pid в любом процессе, использующем flashplayerplugin или pepflasplayer.dll
Поэтому, если бы у меня было открыто два или три браузера, он бы взял pid только того, что в настоящее время использует процесс flash.

HemersonKl

Можно сканировать все открытые процессы и Pid в процессе с помощью pepflaplayer.проблемы ,проблем? Активный. Извините за мой английский.

RickZeeland

Да, на самом деле эта функциональность уже есть в классе GetBrowser, вам нужно будет только скопировать ее и изменить так, чтобы она возвращала не один pid, а массив pid в конце. В этом случае все отдельные функции могут быть заменены одной функцией.
На этот раз я не дам вам никакого кода, так как вы узнаете что-то только сделав это сами !

HemersonKl

Окей. Большое спасибо, я постараюсь. Если я не смогу, то попрошу еще помощи. Спасибо. =)

HemersonKl

Привет. У меня есть еще одна проблема. Когда я спрашиваю pid на falsplayerplugin, иногда приходит неправильный pid. Потому что всегда есть 2 флэшплеера. И мне это нужно, чтобы сделать Pid в процессе, который использует больше памяти. Как я могу это сделать?
Игнорируйте процесс с тем же именем и делайте pid на то, что использует больше памяти? Спасибо.