Я создаю два приложения, используя winui3C# в качестве приложения-отправителя и приложения-получателя.
В приложении-отправителе я использовал findwindow() и send message() при событии нажатия кнопки.
В приложении-получателе я хочу чтобы показать уведомление, когда приложение-отправитель отправляет сообщение.
Проблема в том, что результат Findwindow(): «0x0000000000000000».
Есть идеи, что мне осталось сделать в этом? Спасибо.
Вот мой код отправителя
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll")]
public static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
private const uint WM_USER = 0x0400; // Custom message range for user-defined messages
private const int WM_MY_MESSAGE = (int)(WM_USER + 1); // Custom message identifier
private async void SendMessageButton_Click(object sender, Microsoft.UI.Xaml.RoutedEventArgs e)
{
try
{
// Find the window handle of the receiver app
IntPtr hWnd = FindWindow(null, "com.receiver"); //namespace of receiver app
if (hWnd != IntPtr.Zero)
{
// Send a message to the receiver app
SendMessage(hWnd, (uint)WM_MY_MESSAGE, IntPtr.Zero, IntPtr.Zero);
await ShowMessageDialog("Message sent to the receiver app.");
}
else
{
await ShowMessageDialog("Receiver app window not found.");
}
}
catch (Exception ex)
{
await ShowMessageDialog("An error occurred: " + ex.Message);
}
}
мой приемник:
private const int WM_MY_MESSAGE = 0x0400 + 1; // Custom message identifier
public MainPage()
{
this.InitializeComponent();
RegisterWindowMessage();
}
private void RegisterWindowMessage()
{
// Register the custom window message
RegisterWindowMessage("WM_MY_MESSAGE");
}
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern int RegisterWindowMessage(string lpString);
private void Dispatcher_AcceleratorKeyActivated(CoreDispatcher sender, AcceleratorKeyEventArgs args)
{
// Handle the custom window message
if (args.KeyStatus.RepeatCount == WM_MY_MESSAGE)
{
ShowNotification("Message received from sender app.");
}
}
private async void ShowNotification(string message)
{
var dialog = new MessageDialog(message);
await dialog.ShowAsync();
}
Подробнее здесь: https://stackoverflow.com/questions/783 ... 0000000000
WinUI3 FindWindow() продолжает возвращать 0x0000000000000000 ⇐ C#
Место общения программистов C#
-
Anonymous
1713508413
Anonymous
Я создаю два приложения, используя winui3C# в качестве приложения-отправителя и приложения-получателя.
В приложении-отправителе я использовал findwindow() и send message() при событии нажатия кнопки.
В приложении-получателе я хочу чтобы показать уведомление, когда приложение-отправитель отправляет сообщение.
Проблема в том, что результат Findwindow(): «0x0000000000000000».
Есть идеи, что мне осталось сделать в этом? Спасибо.
Вот мой код отправителя
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll")]
public static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
private const uint WM_USER = 0x0400; // Custom message range for user-defined messages
private const int WM_MY_MESSAGE = (int)(WM_USER + 1); // Custom message identifier
private async void SendMessageButton_Click(object sender, Microsoft.UI.Xaml.RoutedEventArgs e)
{
try
{
// Find the window handle of the receiver app
IntPtr hWnd = FindWindow(null, "com.receiver"); //namespace of receiver app
if (hWnd != IntPtr.Zero)
{
// Send a message to the receiver app
SendMessage(hWnd, (uint)WM_MY_MESSAGE, IntPtr.Zero, IntPtr.Zero);
await ShowMessageDialog("Message sent to the receiver app.");
}
else
{
await ShowMessageDialog("Receiver app window not found.");
}
}
catch (Exception ex)
{
await ShowMessageDialog("An error occurred: " + ex.Message);
}
}
мой приемник:
private const int WM_MY_MESSAGE = 0x0400 + 1; // Custom message identifier
public MainPage()
{
this.InitializeComponent();
RegisterWindowMessage();
}
private void RegisterWindowMessage()
{
// Register the custom window message
RegisterWindowMessage("WM_MY_MESSAGE");
}
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern int RegisterWindowMessage(string lpString);
private void Dispatcher_AcceleratorKeyActivated(CoreDispatcher sender, AcceleratorKeyEventArgs args)
{
// Handle the custom window message
if (args.KeyStatus.RepeatCount == WM_MY_MESSAGE)
{
ShowNotification("Message received from sender app.");
}
}
private async void ShowNotification(string message)
{
var dialog = new MessageDialog(message);
await dialog.ShowAsync();
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78351720/winui3-findwindow-keep-returning-0x0000000000000000[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия