Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menghantar Kunci ke Aplikasi Latar Belakang Seperti Notepad dengan Amanah?

Bagaimanakah Saya Boleh Menghantar Kunci ke Aplikasi Latar Belakang Seperti Notepad dengan Amanah?

Susan Sarandon
Lepaskan: 2025-01-05 08:43:41
asal
927 orang telah melayarinya

How Can I Reliably Send Keys to a Background Application Like Notepad?

Menghantar Kunci ke Aplikasi Latar Belakang

Kod yang disediakan cuba menghantar kekunci "k" ke Notepad tetapi menghadapi masalah. Untuk menyelesaikan masalah ini, beberapa aspek kod perlu ditangani.

Pengendalian Proses yang Betul:

Kod menganggap bahawa Notepad sudah berjalan. Untuk mengendalikan ini dengan tepat, anda harus mendapatkan proses Notepad pertama menggunakan:

Process p = Process.GetProcessesByName("notepad").FirstOrDefault();
Salin selepas log masuk

Jika Notepad tidak sedang berjalan, anda boleh memulakannya menggunakan:

Process p = Process.Start("notepad.exe");
Salin selepas log masuk

Bawa Notepad ke Latar Depan:

Setelah anda mempunyai proses Notepad, anda perlu membawa tetingkap utamanya ke latar depan:

IntPtr h = p.MainWindowHandle;
SetForegroundWindow(h);
Salin selepas log masuk

Menunggu Kestabilan Input:

Sebelum menghantar kunci, anda harus menunggu aplikasi menstabilkan gelung inputnya:

p.WaitForInputIdle();
Salin selepas log masuk

Kunci Hantar:

Akhir sekali, anda boleh hantar kekunci yang dikehendaki:

SendKeys.SendWait("k");
Salin selepas log masuk

Isu Berkemungkinan dengan Hak Pentadbir:

Perlu dinyatakan bahawa jika Notepad berjalan sebagai Pentadbir dan aplikasi anda tidak, kaedah ini mungkin tidak berfungsi.

Diubah suai Kod:

Berikut ialah kod diubah suai yang menggabungkan pembetulan yang diperlukan:

[DllImport("User32.dll")]
static extern int SetForegroundWindow(IntPtr point);

Process p = Process.GetProcessesByName("notepad").FirstOrDefault();
if (p != null)
{
    IntPtr h = p.MainWindowHandle;
    SetForegroundWindow(h);
    SendKeys.SendWait("k");
}
else
{
    p = Process.Start("notepad.exe");
    p.WaitForInputIdle();
    IntPtr h = p.MainWindowHandle;
    SetForegroundWindow(h);
    SendKeys.SendWait("k");
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghantar Kunci ke Aplikasi Latar Belakang Seperti Notepad dengan Amanah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan