问题描述
好的,这是不受欢迎的。
我有一个COM Dll控制界面插件,插入第三方数字音频工作站。
我需要从单击VST插件标题栏的字符串中读取条带编号。控制表面插件没有可用的调用来读取此数据。
我应该说,如果VST插件是单点击,那么它的GUI默认不会启动。
所以我做的是强制单击一下VST插件的GUI启动,挂钩非客户端窗口创建尝试抓取标题栏字符串然后隐藏窗口希望用户永远不会按预期看到它的GUI。
VST显然是预先激活的,因为我没有看到WM_NCACTIVATE被发送到我的钩子。 br />
我确实看到了后面的WM_NCPAINT,那时字符串就像我想要的那样存档所以我抓住了文本并发送了一个带有HIDE_WINDOW的SetWindowPos(),这使得VST GUI消失了,我们再也看不到了它是YAY!
除了:GUI蓝框在很短的时间内可以看到让我感到焦虑。
以下是单击VST插件时发生的SPY ++游行。
你认为抑制蓝框也是可能的吗? le?
P.S. NC_ACTIVE在手动关闭VST GUI时被发送到我的钩子但是(显然)没有创建它。
谢谢。
:Ron
< 00001> 000E04F6 S WM_NCACTIVATE fActive:True
< 00002> 000E04F6 R WM_NCACTIVATE
< 00003> 000E04F6 S WM_NCACTIVATE fActive:False
< 00004> 000E04F6 R WM_NCACTIVATE fDeactivateOK:True
< 00005> 000E04F6 S WM_NCACTIVATE fActive:False
< 00006> 000E04F6 R WM_NCACTIVATE fDeactivateOK:True
< 00007> 000E04F6 S WM_NCACTIVATE fActive:False
< 00008> 000E04F6 R WM_NCACTIVATE fDeactivateOK:True
< 00009> 000E04F6 S WM_NCACTIVATE fActive:False
< 00010> 000E04F6 R WM_NCACTIVATE fDeactivateOK:True
< 00011> 000E04F6 S WM_NCPAINT hrgn:01042269
< 00012> 000E04F6 R WM_NCPAINT
< 00013> 000E04F6 S WM_NCACTIVATE fActive:True
< 00014> 000E04F6 R WM_NCACTIVATE
< 00015> 000E04F6 S WM_NCPAINT hrgn:F4041664
< 00016> 000E04F6 R WM_NCPAINT
< 00017> 000E04F6 S WM_NCACTIVATE fActive:True
< 00018> 000E04F6 R WM_NCACTIVATE
< 00019> 000E04F6 S WM_NCACTIVATE fActive:False
< 00020> 000E04F6 R WM_NCACTIVATE fDeactivateOK:True
< 00021> 000E04F6 S WM_NCACTIVATE fActive:False
< 00022> 000E04F6 R WM_NCACTIVATE fDeactivateOK:True
< 00023> 000E04F6 S WM_NCACTIVATE fActive:False
< 00024> 000E04F6 R WM_NCACTIVATE fDeactivateOK:True
< 00025> 000E04F6 S WM_NCPAINT hrgn:DA040B9E
< 00026> 000E04F6 R WM_NCPAINT
< 00027> 000E04F6 S WM_NCHITTEST xPos:680 yPos:407
< 00028> 000E04F6 R WM_NCHITTEST nHittest:HTLEFT
< 00029> 000E04F6 P WM_NCMOUSEMOVE nHittest:HTLEFT xPos:680 yPos:407
< 00030> 000E04F6 P WM_NCMOUSELEAVE
< 00031> 000E04F6 S WM_NCHITTEST xPos:680 yPos:239
< 00032> 000E04F6 R WM_NCHITTEST nHittest:HTLEFT
< 00033> 000E04F6 P WM_NCMOUSEMOVE nHittest:HTLEFT xPos:680 yPos:239
< 00034> 000E04F6 P WM_NCMOUSELEAVE
< 00035> 000E04F6 S WM_NCPAINT hrgn:00000001
< 00036> 000E04F6 R WM_NCPAINT
< 00037> 000E04F6 S WM_NCACTIVATE fActive:True
< 00038> 000E04F6 R WM_NCACTIVATE
< 00039> 000E04F6 S WM_NCACTIVATE fActive:False
< 00040> 000E04F6 R WM_NCACTIVATE fDeactivateOK:True
< 00041> 000E04F6 S WM_NCACTIVATE fActive:False
< 00042> 000E04F6 R WM_NCACTIVATE fDeactivateOK:True
< 00043> 000E04F6 S WM_NCACTIVATE fActive:False
< 00044> 000E04F6 R WM_NCACTIVATE fDeactivateOK:True
< 00045> 000E04F6 S WM_NCACTIVATE fActive:False
< 00046> 000E04F6 R WM_NCACTIVATE fDeactivateOK:True
< 00047> 000E04F6 S WM_NCPAINT hrgn:01042276
< 00048> 000E04F6 R WM_NCPAINT
< 00049> 000E04F6 S WM_NCACTIVATE fActive:True
< 00050> 000E04F6 R WM_NCACTIVATE
< 00051> 000E04F6 S WM_NCACTIVATE fActive:True
< 00052> 000E04F6 R WM_NCACTIVATE
< 00053> 000E04F6 S WM_NCACTIVATE fActive:False
< 00054> 000E04F6 R WM_NCACTIVATE fDeactivateOK:True
< 00055> 000E04F6 S WM_NCACTIVATE fActive:False
< 00056> 000E04F6 R WM_NCACTIVATE fDeactivateOK:True
< 00057> 000E04F6 S WM_NCACTIVATE fActive:False
< 00058> 000E04F6 R WM_NCACTIVATE fDeactivateOK:True
OK, this is off the beaten path.
I have a COM Dll control surface plugin that plugs into a 3rd Party Digital Audio Workstation.
I need to read the strip number from the VST plugin's title bar's string as they are single clicked. There is no calls available to the control surface plugin to read this data otherwise.
I should say that if the VST plugin is single clicked, then it's GUI by default is not launched.
So what I did was force a GUI launch of the VST plugin upon single click, hook the non client window creation to try and grab the title bar string then hide the window in hopes the user would never see it's GUI as expected.
The VST's are apparently pre-activated as I don't see WM_NCACTIVATE sent to my hook.
I do see the WM_NCPAINT that follows and at that time the string is filed in like I want so I grab the text and send a SetWindowPos() with HIDE_WINDOW set which makes the VST GUI disappear and we never see it YAY!
Except: A GUI blue frame is visible for a very brief moment causing me angst.
Below is the SPY++ parade that happens when a VST plugin is single clicked.
Do you think suppressing the blue frame is also possible?
P.S. NC_ACTIVE IS sent to my hook upon manual close of the VST GUI but no (apparently) upon it's creation.
Thanks.
:Ron
<00001> 000E04F6 S WM_NCACTIVATE fActive:True
<00002> 000E04F6 R WM_NCACTIVATE
<00003> 000E04F6 S WM_NCACTIVATE fActive:False
<00004> 000E04F6 R WM_NCACTIVATE fDeactivateOK:True
<00005> 000E04F6 S WM_NCACTIVATE fActive:False
<00006> 000E04F6 R WM_NCACTIVATE fDeactivateOK:True
<00007> 000E04F6 S WM_NCACTIVATE fActive:False
<00008> 000E04F6 R WM_NCACTIVATE fDeactivateOK:True
<00009> 000E04F6 S WM_NCACTIVATE fActive:False
<00010> 000E04F6 R WM_NCACTIVATE fDeactivateOK:True
<00011> 000E04F6 S WM_NCPAINT hrgn:01042269
<00012> 000E04F6 R WM_NCPAINT
<00013> 000E04F6 S WM_NCACTIVATE fActive:True
<00014> 000E04F6 R WM_NCACTIVATE
<00015> 000E04F6 S WM_NCPAINT hrgn:F4041664
<00016> 000E04F6 R WM_NCPAINT
<00017> 000E04F6 S WM_NCACTIVATE fActive:True
<00018> 000E04F6 R WM_NCACTIVATE
<00019> 000E04F6 S WM_NCACTIVATE fActive:False
<00020> 000E04F6 R WM_NCACTIVATE fDeactivateOK:True
<00021> 000E04F6 S WM_NCACTIVATE fActive:False
<00022> 000E04F6 R WM_NCACTIVATE fDeactivateOK:True
<00023> 000E04F6 S WM_NCACTIVATE fActive:False
<00024> 000E04F6 R WM_NCACTIVATE fDeactivateOK:True
<00025> 000E04F6 S WM_NCPAINT hrgn:DA040B9E
<00026> 000E04F6 R WM_NCPAINT
<00027> 000E04F6 S WM_NCHITTEST xPos:680 yPos:407
<00028> 000E04F6 R WM_NCHITTEST nHittest:HTLEFT
<00029> 000E04F6 P WM_NCMOUSEMOVE nHittest:HTLEFT xPos:680 yPos:407
<00030> 000E04F6 P WM_NCMOUSELEAVE
<00031> 000E04F6 S WM_NCHITTEST xPos:680 yPos:239
<00032> 000E04F6 R WM_NCHITTEST nHittest:HTLEFT
<00033> 000E04F6 P WM_NCMOUSEMOVE nHittest:HTLEFT xPos:680 yPos:239
<00034> 000E04F6 P WM_NCMOUSELEAVE
<00035> 000E04F6 S WM_NCPAINT hrgn:00000001
<00036> 000E04F6 R WM_NCPAINT
<00037> 000E04F6 S WM_NCACTIVATE fActive:True
<00038> 000E04F6 R WM_NCACTIVATE
<00039> 000E04F6 S WM_NCACTIVATE fActive:False
<00040> 000E04F6 R WM_NCACTIVATE fDeactivateOK:True
<00041> 000E04F6 S WM_NCACTIVATE fActive:False
<00042> 000E04F6 R WM_NCACTIVATE fDeactivateOK:True
<00043> 000E04F6 S WM_NCACTIVATE fActive:False
<00044> 000E04F6 R WM_NCACTIVATE fDeactivateOK:True
<00045> 000E04F6 S WM_NCACTIVATE fActive:False
<00046> 000E04F6 R WM_NCACTIVATE fDeactivateOK:True
<00047> 000E04F6 S WM_NCPAINT hrgn:01042276
<00048> 000E04F6 R WM_NCPAINT
<00049> 000E04F6 S WM_NCACTIVATE fActive:True
<00050> 000E04F6 R WM_NCACTIVATE
<00051> 000E04F6 S WM_NCACTIVATE fActive:True
<00052> 000E04F6 R WM_NCACTIVATE
<00053> 000E04F6 S WM_NCACTIVATE fActive:False
<00054> 000E04F6 R WM_NCACTIVATE fDeactivateOK:True
<00055> 000E04F6 S WM_NCACTIVATE fActive:False
<00056> 000E04F6 R WM_NCACTIVATE fDeactivateOK:True
<00057> 000E04F6 S WM_NCACTIVATE fActive:False
<00058> 000E04F6 R WM_NCACTIVATE fDeactivateOK:True
推荐答案
这篇关于隐藏非客户端窗口 - 仍然看到它是蓝色框架。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!