我的大圖片問題: 我需要從Windows 10桌面應用程序(或真正的服務)向同一OS實例/機器上的UWP XAML MVVM應用程序發送信號。如何在UWP XAML MVVM應用程序上接收最簡單的Windows消息?
我在全局命名空間中使用了命名信號量,但這些在UWP上根本無法工作(出於安全原因,也許是設計)。沒有快樂。
我試過UWP插座,並與UWP這個工程爲收聽只有當客戶端是在遠程機器上。這也是一個安全設計決定嗎?不知道。從回送限制中豁免應用程序不會有幫助,因爲只有在UWP應用程序是發出請求的客戶端時才適用。沒有快樂。
OK,所以我留下的OS上發送Windows消息到特定的窗口...
我的測試應用程序是在GitHub上UWP AdventureWorks示例。我如何獲得這個來處理從不同進程發送的Windows消息?我很難過。
以下是我的測試客戶端代碼。
問題: 如何在AdventureWorks中處理此消息?將代碼更改保持在最低限度是很重要的,但目前我被卡住了,並且不想繼續。 (這似乎是一個嚴密的祕密......)
請幫忙!請示例代碼。
class Program
{
[DllImport("user32.dll")]
public static extern IntPtr FindWindow(string lpClassName, String lpWindowName);
[DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, uint wMsg, IntPtr wParam, IntPtr lParam);
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
static extern uint RegisterWindowMessage(string lpString);
[DllImport("kernel32.dll")]
static extern uint GetLastError();
static void Main(string[] args)
{
const string lpClassName = "ApplicationFrameWindow";
const string lpWindowName = "AdventureWorks.Shopper";
IntPtr hwnd = FindWindow(lpClassName, lpWindowName);
uint messageId = RegisterWindowMessage("MetaAutomationMessage");
int sendMessageResult = SendMessage(hwnd, messageId, IntPtr.Zero, IntPtr.Zero);
Console.WriteLine(string.Format("Message result is '{0}', ", sendMessageResult));
uint lastError = GetLastError();
Console.WriteLine(string.Format("GetLastError result is '{0}', ", lastError));
}
}
在問候「?試過UWP插座,這一點也適用與UWP因爲只有當客戶端是在遠程計算機上收聽這是一個安全的設計決策,太不知道」 ,您是否認爲這可能不起作用,因爲Package Manifest中沒有啓用「Private Networks(Client&Server)」功能? – Saxar
我已經制定了勝利10應用程序以及uwp應用程序,您可以實施信號器廣播/信號到其他應用程序。 –