Я видел несколько примеров, которые работают для меня. Поэтому я хотел задать новый вопрос. Я специально пытаюсь использовать метод AccessibleObjectFromWindow из olea cc .dll.
У меня есть версия функции, написанная кем-то другим, в Access VBA, которую я пытаюсь перенести на C#.
рассматриваемый код:
public static bool GetReferenceToApplication(long hWndXL, out object oApplication)
{
oApplication = null;
long hWinDesk = (long)FindWindowEx(new IntPtr(hWndXL), new IntPtr(0), "XLDESK", string.Empty);
long hWin7 = (long)FindWindowEx(new IntPtr(hWinDesk), new IntPtr(0), "EXCEL7", string.Empty);
Guid guid = new Guid("00020400-0000-0000-C000-000000000046");
object obj = null;
if (AccessibleObjectFromWindow(new IntPtr(hWin7), Convert.ToUInt32("&HFFFFFFF0", 16), ref guid, ref obj) == RETURN_OK)
{
oApplication = obj;
return true;
}
else return false;
}
Convert.ToUInt32 ("& HFFFFFFF0", 16) не работает. Я знаю, что я делаю что-то не так, я не знаю, что именно. В VBA я думаю, что амперсанд обозначает длинный. Но я еще не слишком знаком с такими вещами. Любая помощь будет оценена. Теперь я получаю исключение, независимо от того, каким образом я пытаюсь преобразовать это значение в uint.