Я пытаюсь загрузить приложение WinForms через комплект сертификации приложений Windows и терплю неудачу в этом тесте:
<TEST INDEX="17" NAME="Multi user session test" DESCRIPTION="Multi User checks Application invocation in multiple sessions." EXECUTIONTIME="00h:00m:24s.22ms">
<RESULT><![CDATA[FAIL]]></RESULT>
<MESSAGES />
Я предполагаю, что это потому, что я разрешаю запуск только одного экземпляра приложения, например:
using ( var p = System.Diagnostics.Process.GetCurrentProcess() )
if ( System.Diagnostics.Process.GetProcessesByName( p.ProcessName ).Length > 1 )
{
MessageBox.Show(
"An instance of xxx is already running!",
Title,
MessageBoxButtons.OK,
MessageBoxIcon.Exclamation );
return;
}
Это трей-приложение, активируемое комбинацией горячих клавиш, зарегистрированной с помощью этой функции:
[DllImport( "user32", EntryPoint = "RegisterHotKey", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true )]
public static extern int RegisterHotkey( IntPtr hWnd, int id, int fsModifiers, int vk );
Итак, я думаю, у меня есть два вопроса:
1) Как я могу правильно предотвратить запуск нескольких сеансов в одном и том же пользовательском сеансе, но разрешить несколько экземпляров в нескольких пользовательских сеансах?
2) Смогу ли я зарегистрировать один и тот же хоткей в разных пользовательских сессиях? Или я должен как-то отменить и перерегистрировать горячую клавишу при переключении пользовательских сессий?
ТИА