Ваш самый лучший источник информации и новостей около окна vista, окна vista и оборудование на интернете

СТАТЬИ Vista ВЕРХНЯЯ ЧАСТЬ 50 Vista VIDEOS Vista МЯГКИЙ ПОМОЩЬ Vista

Беспорядок Clipboard!


Примечание: это содержание первоначально от http://mygreenpaste.blogspot.com. Если вы будете чтением оно от некоторого другого места, то пожалуйста примите время посетить Мой зеленый затир, Inc. Вы.

О'КЕЙО, поэтому возможно беспорядок немного жестковатое слово здесь. Но clipboard недавн управлял мной гайки! Все, котор я пытался сделать должно было скопировать некоторый текст к ему, и деятельность терпела неудачу. Of course, по мере того как было ad hoc app, я не имел нисколько вроде обработк ошибок. App работал справедливый штраф на одной системе, но бежать app на другой системе (фактически машине) последовательно привел к в отказе скопировать текст к clipboard.

Предельно, я мог обусловить что процесс предотвращал мой app от класть данные в clipboard, но я пока не нашел пристойный workaround для когда проблема случается. Оно не критически для меня, как поступок копировать текст к clipboard больше из nicety чем требование.

В лубом случае, использующ P/Invoke и System.Diagnostics, Я нашел что vmusrvc.exe - фактически пикокулон «фактически потребитель машины обслуживает» - имело clipboard открытый. Использование timestamps от Отростчатый монитор's профилируя случаи (произведенные на 100 интервалах госпожи), и timestamp вылтинной из строя деятельности от моего app, я мог обусловить стог vmusrvc.exe:

ntdll.dllKiFastSystemCallRet
vmusrvc.exevmusrvc.exe + 0x9a17
vmusrvc.exevmusrvc.exe + 0x9c24
vmusrvc.exevmusrvc.exe + 0x91f8
vmusrvc.exevmusrvc.exe + 0x907f
USER32.dllInternalCallWinProc + 0x28
USER32.dllUserCallWinProcCheckWow + 0x150
USER32.dllDispatchClientMessage + 0xa3
USER32.dll__fnDWORD + 0x24
ntdll.dllKiUserCallbackDispatcher + 0x13
vmusrvc.exevmusrvc.exe + 0x2d29
vmusrvc.exevmusrvc.exe + 0xdba6
kernel32.dllBaseProcessStart + 0x23

Никакие параметры, of course, и не кажется, что будут данные по символа для vmusrvc.exe имеющимися, но очевидно user32.dll не обрабатывают некоторое сообщение. Я могу посмотреть в это больше на более последний этап.

Для того чтобы найти процесс мешал с моей работой clipboard, я использовал P/Invoke для того чтобы вызвать GetOpenClipboardWindow() и после этого GetWindowThreadProcessId(), проходящ в возвращенную ручку GetOpenClipboardWindow (). После этого, находить имя процессов исполнительное был справедлив дело использования Модули собрание Процесс пример возвратил путем проходить в отростчатое retrieved идентификацию GetWindowThreadProcessId () к System.Diagnostics.Process.GetProcessById().

Following Кодий:

использование System.Runtime.InteropServices;
использование System.Diagnostics;
...
зашнуруйте данные = «al kajsdlkj alkjsdl aasdlkjasdlk»;
попытка
{
Clipboard.SetData (System.Windows.Forms.DataFormats.Text, данные);
}
задвижка (ee ExternalException)
{
LogIt (ee.ToString ());
hWnd = GetOpenClipboardWindow IntPtr ();
если (IntPtr.Zero! = hWnd)
{
pid uint = 0;
tid uint = GetWindowThreadProcessId (hWnd, вне pid);
LogIt («процесс с hWnd {0}, PID {1} ({1: x}), TID {2} ({2: x}),» +
"name {3} has the clipboard", hWnd, pid, tid,
Process.GetProcessById( (int)pid ).Modules[0].FileName );
}
}

Resulted in the following output:


2008-03-25 00:54:45.4938864--> System.Runtime.InteropServices.ExternalException: Requested Clipboard operation did not succeed.
at System.Windows.Forms.Clipboard.ThrowIfFailed(Int32 hr)
at System.Windows.Forms.Clipboard.SetDataObject(Object data, Boolean copy, Int32 retryTimes, Int32 retryDelay)
at System.Windows.Forms.Clipboard.SetData(String format, Object data)
at Clippy.Form1.button1_Click(Object sender, EventArgs e)
2008-03-25 00:54:45.5339440--> Process with hWnd 65716 (65716), PID 1492 (5d4), TID 1496 (5d8), name C:\Program Files\Virtual Machine Additions\vmusrvc.exe has the clipboard

Interestingly, trying an alternative method of the Clipboard to set the content also failed. The Clipboard.SetDataObject() overload that takes a retryTimes and retryDelay parameter failed in the same fashion after roughly ten seconds when invoked as follows:


Clipboard.SetDataObject( data, false, 100, 100 );

I tried variations on retryTimes and retryDelay, to no avail.

Not sure what vmusrvc.exe is doing with the clipboard (probably has to do with monitoring it for host / guest VM interaction), but the act of setting the contents of the clipboard didn't fail 100% of the time in the VM. Often enough to make it extremely unreliable, though. During "normal" system usage, I was not able to cause a failure when running the app on a non-virtual (actual?) system.

Popularity: 2%


Written by «/\/\Ø|ö±ò\/»®©. Read more great feeds at is source WEBSITE
no comments.
Read more articles on P/Invoke and GetOpenClipboardWindow and System.Diagnostics and Clipboard and GetWindowThreadProcessId and Process Monitor and c# and processes and Virtual Machine and otherSoftware and Virtual PC.

No comments

There are still no comments on this article.

Leave your comment...

If you want to leave your comment on this article, simply fill out the next form:




You can use these XHTML tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong> .