Forum

Could not obtain OLE control window handle


#1

Hello, I am integrating a C# SDK, Nuitrack, as a plugin. Everything is working fine when I was writing codes and testing it on a existing empty patch. However, once I saved my finished patch and re-open it, I got the following error: “Could not obtain OLE control window handle”. Do you have any idea of this happening?

Here is the Exception Log:
Exception log with detailed tech info. Generated on 15/1/2019 3:41:12 PM.
You may send it to the application vendor, helping him to understand what had happened.
Application title: SSSS
Application file: C:\adam\vvvv\vvvv_50beta38.1_x64\vvvv.exe
------------------------------------------------------------------------------
Exception class: EOleError
Exception message: Could not obtain OLE control window handle.
Exception address: 00000000006A4FB8
------------------------------------------------------------------------------
Main thread ID = 9224
Exception thread ID = 9224
------------------------------------------------------------------------------
Exception stack
Stack list, generated 15/1/2019 3:41:12 PM
[00000000006A4FB8]{vvvv.exe } Vcl.OleCtrls.TOleControl.HookControlWndProc (Line 1490, “Vcl.OleCtrls.pas” + 6)
[00000000006A3A3D]{vvvv.exe } Vcl.OleCtrls.TOleControl.CreateWnd (Line 871, “Vcl.OleCtrls.pas” + 9)
[00000000004E5FB4]{vvvv.exe } Vcl.Controls.TWinControl.CreateHandle (Line 9479, “Vcl.Controls.pas” + 5)
[00000000004EBF0E]{vvvv.exe } Vcl.Controls.TWinControl.HandleNeeded (Line 12026, “Vcl.Controls.pas” + 6)
[00000000004EBF02]{vvvv.exe } Vcl.Controls.TWinControl.HandleNeeded (Line 12024, “Vcl.Controls.pas” + 4)
[00000000004DB0D5]{vvvv.exe } Vcl.Controls.TControlCanvas.CreateHandle (Line 5039, “Vcl.Controls.pas” + 33)
[00000000004AF02E]{vvvv.exe } Vcl.Graphics.TCanvas.RequiredState (Line 4190, “Vcl.Graphics.pas” + 7)
[00000000004AEC51]{vvvv.exe } Vcl.Graphics.TCanvas.TextExtent (Line 4087, “Vcl.Graphics.pas” + 2)
[00000000004AD2D4]{vvvv.exe } Vcl.Graphics.TCustomCanvas.TextWidth (Line 3638, “Vcl.Graphics.pas” + 2)
[00000000007AD3E1]{vvvv.exe } UserNameControl.TMUserNameControl.SetInfo (Line 54, “UserNameControl.pas” + 9)
[00000000007AEA30]{vvvv.exe } IOViewComponent.TMIOComponent.SetUserName (Line 328, “IOViewComponent.pas” + 15)
[00000000009DC5A5]{vvvv.exe } Nodes.TMIONode.CreateComponent (Line 2119, “Nodes.pas” + 5)
[00000000008C9686]{vvvv.exe } IONodes.TMValueNode.CreateComponent (Line 583, “IONodes.pas” + 11)
[00000000009DB23E]{vvvv.exe } Nodes.TMBigNode.DoShowComponent (Line 1804, “Nodes.pas” + 4)
[00000000009DB20B]{vvvv.exe } Nodes.TMBigNode.ShowComponent (Line 1797, “Nodes.pas” + 19)
[00000000009DAFD6]{vvvv.exe } Nodes.TMBigNode.DoSetComponentMode (Line 1713, “Nodes.pas” + 11)
[00000000009DAF6B]{vvvv.exe } Nodes.TMBigNode.SetComponentMode (Line 1697, “Nodes.pas” + 4)
[00000000009411A4]{vvvv.exe } PatchFactory.TMPatch.CreateComponent (Line 2995, “PatchFactory.pas” + 7)
[00000000009DB23E]{vvvv.exe } Nodes.TMBigNode.DoShowComponent (Line 1804, “Nodes.pas” + 4)
[00000000009412B9]{vvvv.exe } PatchFactory.TMPatch.DoShowComponent (Line 3020, “PatchFactory.pas” + 6)
[00000000009DB20B]{vvvv.exe } Nodes.TMBigNode.ShowComponent (Line 1797, “Nodes.pas” + 19)
[00000000009DAFD6]{vvvv.exe } Nodes.TMBigNode.DoSetComponentMode (Line 1713, “Nodes.pas” + 11)
[00000000009DAF6B]{vvvv.exe } Nodes.TMBigNode.SetComponentMode (Line 1697, “Nodes.pas” + 4)
[00000000009DAEA2]{vvvv.exe } Nodes.TMBigNode.PerformAction (Line 1681, “Nodes.pas” + 26)
[0000000000940FEB]{vvvv.exe } PatchFactory.TMPatch.PerformAction (Line 2956, “PatchFactory.pas” + 31)
[000000000093FCFC]{vvvv.exe } PatchFactory.TMPatch.PerformNodeActions (Line 2664, “PatchFactory.pas” + 90)
[0000000000940F7A]{vvvv.exe } PatchFactory.TMPatch.PerformAction (Line 2937, “PatchFactory.pas” + 12)
[00000000009380D2]{vvvv.exe } PatchFactory.TMPatchClass.PerformActionOnInstances (Line 1011, “PatchFactory.pas” + 1)
[0000000000938E96]{vvvv.exe } PatchFactory.TMPatchClass.PerformAction (Line 1219, “PatchFactory.pas” + 163)
[0000000000936681]{vvvv.exe } PatchFactory.TMPatchFactory.PerformAction (Line 578, “PatchFactory.pas” + 21)
[00000000009373E9]{vvvv.exe } PatchFactory.TMPatchFactory.PerformAction (Line 809, “PatchFactory.pas” + 2)
[000000000096435A]{vvvv.exe } MainMenu.TMMainMenuFrame.CreateNode (Line 2321, “MainMenu.pas” + 117)
[0000000000964D16]{vvvv.exe } MainMenu.TMMainMenuFrame.CreateNode (Line 2427, “MainMenu.pas” + 9)
[00000000009617AE]{vvvv.exe } MainMenu.TMMainMenuFrame.OpenFile (Line 1442, “MainMenu.pas” + 49)
[0000000000970F93]{vvvv.exe } Main.TMMainForm.WndProc (Line 389, “Main.pas” + 40)
[00000000004E67A9]{vvvv.exe } Vcl.Controls.TWinControl.MainWndProc (Line 9691, “Vcl.Controls.pas” + 5)
[000000000048BF16]{vvvv.exe } System.Classes.StdWndProc (Line 13896, “System.Classes.pas” + 9)
[00007FFC76546CC1]{USER32.dll } Unknown function at CallWindowProcW
[00007FFC7654699C]{USER32.dll } Unknown function at CallWindowProcW
[00007FFC76550453]{USER32.dll } Unknown function at IsWindowVisible
[00007FFC7710DCA4]{ntdll.dll } KiUserCallbackDispatcher
[00007FFC744E10A4]{win32u.dll } NtUserPeekMessage
[00007FFC76548633]{USER32.dll } Unknown function at PeekMessageW
[00007FFC765485C5]{USER32.dll } PeekMessageW
[00000000005C67F1]{vvvv.exe } Vcl.Forms.TApplication.ProcessMessage (Line 10143, “Vcl.Forms.pas” + 2)
[00000000005C6968]{vvvv.exe } Vcl.Forms.TApplication.HandleMessage (Line 10194, “Vcl.Forms.pas” + 1)
[00000000005C6E64]{vvvv.exe } Vcl.Forms.TApplication.Run (Line 10332, “Vcl.Forms.pas” + 26)
[0000000000D9604C]{vvvv.exe } vvvv.vvvv (Line 162, “” + 9)
[00007FFC766D3034]{KERNEL32.DLL} BaseThreadInitThunk
[00007FFC770E1551]{ntdll.dll } RtlUserThreadStart
------------------------------------------------------------------------------


#2

i’m afraid this is a bit too generic. you’d have to give us a bit more information what you’re doing there… also some code would help…


#3

Thank you @joreg . Having had more test, I found out that the error would only be thrown after the SDK (Nuitrack) 's commercial license is activated. Thus, the situation cannot be simulated with trial version. And, the error happens at the moment when vvvv wants to open a new window. e.g., right-click to open a sub-patch. Thus, I guess the problem is in the side of SDK’s license checking algorithm. Erm… how can I know how vvvv open a window? Could I write a similar C# program to open windows, and encounter the same error? If yes, then I could send my c# testing program to Nuitrack, and ask for their support. Thanks.

Btw, my plugin was written in c# plugin, and now trying to access the SDK in VL, and see any difference.