Как вести пароль в программе exe автоматически - C#
Формулировка задачи:
У меня есть программа пусть будет Setup.exe при открытии программы она просит вести пароль как сделать так чтоб моя программа автоматически вводила пароль
что нужно добавить чтоб ввести пароль на открытие файла?
System.Diagnostics.Process p = new System.Diagnostics.Process(); p.StartInfo.FileName = @"C:\setup.exe"; p.Start();
private void button1_Click(object sender, EventArgs e) { System.Diagnostics.Process p = new System.Diagnostics.Process(); p.StartInfo.FileName = @"C:\setup.exe"; p.Start(); }
Решение задачи: «Как вести пароль в программе exe автоматически»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Diagnostics; using System.Runtime.InteropServices; using System.Text; class Program { private static void Main(string[] args) { var founder = new ExeLockFounder(); founder.SendText("Hello222222!"); } } class ExeLockFounder { const uint WM_SETTEXT = 0x000C; delegate bool EnumDelegate(IntPtr hWnd, IntPtr lParam); [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)] static extern int GetClassName(IntPtr hWnd, StringBuilder lpClassName, int nMaxCount); [DllImport("user32.dll", SetLastError = true)] private static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string className, string lpszWindow); [DllImport("user32.dll")] static extern bool EnumThreadWindows(int dwThreadId, EnumDelegate lpfn, IntPtr lParam); [DllImport("user32.dll")] static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, [MarshalAs(UnmanagedType.LPStr)] string lParam); private static IntPtr GetWindowByClassName(IEnumerable<IntPtr> windows, string className) { foreach (var window in windows) { var sb = new StringBuilder(256); GetClassName(window, sb, sb.Capacity); if (sb.ToString() == className) return window; } return IntPtr.Zero; } static IEnumerable<IntPtr> EnumerateProcessWindowHandles(Process process) { var handles = new List<IntPtr>(); foreach (ProcessThread thread in process.Threads) EnumThreadWindows(thread.Id, (hWnd, lParam) => { handles.Add(hWnd); return true; }, IntPtr.Zero); return handles; } private readonly IntPtr _editHandle; public ExeLockFounder() { var processes = Process.GetProcessesByName("Setup"); var proc = Array.Find(processes, x => string.Equals(x.MainWindowTitle, "ExeLock", StringComparison.OrdinalIgnoreCase)); var windows = EnumerateProcessWindowHandles(proc); var hWnd = GetWindowByClassName(windows, "TFormPassDialog"); _editHandle = FindWindowEx(hWnd, IntPtr.Zero, "TEdit", null); } public void SendText(string message) { SendMessage(_editHandle, WM_SETTEXT, IntPtr.Zero, message); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д