KoMaDo   VISIO SQUARE : VISIO全般  ■ Headline ■ HOME    

VISIO全般トップへ ▼カッ飛び最後 

  ヘルプウィンドウの制御

01: 名前:けいみん投稿日:2007/06/18(月) 17:12
C#2005 & Visio2003(VisioDrawingControl)で開発しております。
DrawingControl上にフォーカスがある状態で、F1キーを押下するとヘルプ画面が
表示されますが、ヘルプ画面を表示させない方法を探しております。
KeyDownイベントで制御しようと思いましたが、ファンクションキーを押下しても
イベントをフックしてくれません。
どなたかご教授ください。
よろしくお願いします。

02: 名前:けいみん投稿日:2007/06/18(月) 17:21
間違えました。Visio2007での場合でした。

03: 名前:visGeek投稿日:2007/06/18(月) 17:26
試していませんが、UIObjectのカスタマイズで
visCmdHelpContentsを潰すというのはいかがでしょうか。

04: 名前:けいみん投稿日:2007/06/19(火) 13:06
visGeekさま。ありがとうございます。
知識不足のため、いろいろ調べたのですが、visCmdHelpContentsを使用して、
実際どのようにコーディングすればよいかわかりません。
簡単なコーディング例等ありましたら教えていただけませんでしょうか。

05: 名前:visGeek投稿日:2007/06/19(火) 14:04
下記にサンプルを示します。

処理の流れは合っているようですが、
visCmdHelpContentsは引っかからないようです。
他のvisCmdHelp***も試しましたが、どれも引っかかりませんでした。

次に、AccelItemsのKeyプロパティで
判別しようとしましたがF1可動化の判定方法が分かりませんでした。

どなたか、続きをフォローしてください。

Dim uio As UIObject
Set uio = Application.BuiltInMenus

Dim acis As AccelItems
Set acis = uio.AccelTables.ItemAtID(visUIObjSetDrawing).AccelItems

Dim i As Integer
For i = acis.Count - 1 To 1 Step -1
Dim aci As AccelItem
Set aci = acis.Item(i)

Debug.Print aci.CmdNum

If aci.CmdNum = visCmdHelpContents Or _
aci.CmdNum = visCmdHelpAboutVisio Or _
aci.CmdNum = visCmdHelpMode Or _
aci.CmdNum = visCmdHelpQuickTour Or _
aci.CmdNum = visCmdHelpSearch Or _
aci.CmdNum = visCmdHelpShapeBasics Or _
aci.CmdNum = visCmdHelpStencil Or _
aci.CmdNum = visCmdHelpTemplates Then
aci.Delete
End If
Next i

Application.SetCustomMenus uio

06: 名前:yoda投稿日:2007/06/19(火) 18:49
ファンクションキーのアイテムは見つかりませんね。
Visioでは、変更できないのかも知れません。
Windows APIに、あればよいのですが。
ただ、WindowsAPIで消すと、Visioだけでなく、
F!が全く使えなくなるかも、しれませんね。

07: 名前:visGeek投稿日:2007/06/19(火) 20:53
ウィンドウプロシージャをサブクラス化して
要らないキーを握りつぶすという方法がありましたね。

08: 名前:yoda投稿日:2007/06/21(木) 07:10
F1を抑止するという需要は、かなりあるとみえて、そのようなフリーウエア
や、方法を書いたサイトがありました。
いくつかのフリーウエアで試してみたところ、WindowsのF1やExcelのF1は、
抑止できましたが、VisioのF1は抑止できませんでした。
Visioのイベントで、KeyDownというのがありますが、これを使っても、
このイベントよりHelpの呼出の方が先に、出るようで、F1を押したという
イベントは、検出できませんでした。Visioは多分、F1キーを押したという、
ことを検出したら、優先的にHELPを出すように、なっているのでしょう。

09: 名前:yoda投稿日:2007/06/21(木) 09:08
Excelでは、非常に簡単で、
Application.OnKey "{F1}",""
でよいのに、Visioでは、できません。


VISIO全般トップへ ▲カッ飛び先頭