ヘルプウィンドウの制御 |
- 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では、できません。
|
|