LabViewでAlt-Tabを修正

LabViewでプログラムを作成すると、ある時点で1つの画面に収まりきれなくなります。 「良い」LabViewは、そのような場合、1つのviファイルを複数のsubviファイルに分割する必要があると言います。 時間が経つにつれて、このようなsubviがたくさんあります。 しかし、NIのスタッフはどういうわけか便利なナビゲーションの面倒を見ていませんでした。



LabViewはすべてのウィンドウをAlt-Tabリストの一番上に移動するだけでなく(他の誰もそれを行いません: en.wikipedia.org/wiki/Alt-Tab )、viファイルのアイコンを再定義する広く使用されている機能にもかかわらず、それらの代わりのAlt-Tabリストは、LabViewロゴの細い行です。



画像



この動作のいくつかは、2番目のモニターを購入するようにプッシュします。 彼らにとって、問題はこれによって大部分解決されます。 Alt-Tabメニューにサムネイルが表示されたWindows Aeroインターフェイスも一部役立ちます。 しかし、表面にあると思われる解決策-(a)スイッチを作成することは他のすべてのアプリケーションと同じであり、(b)リストにviアイコンを表示することは標準的な手段では達成できません。



最初のバージョンからほぼ開始されたという事実から判断すると、対応する「改善のアイデア」は2010年の「フォーラム」から「アイデア交換のフォーラム」にほこりを集めています。ni.com/ t5 / LabVIEW-Idea-Exchange / Make-Alt -Tab-behavior-consistent-with-other-applications / idi-p / 1162219 、これをナショナルインスツルメンツに要求することは無用です。 ただし、まだ何かを行うことができます。



パート1.ワンクリックでLabviewを終了します



まず、この種のスクリプトをPythonで記述しました。たとえば、Alt-`などのワンクリックで、ブラウザーと現在のLVウィンドウを切り替えることができます。



import ctypes EnumWindows = ctypes.windll.user32.EnumWindows EnumWindowsProc = ctypes.WINFUNCTYPE(ctypes.c_bool, ctypes.POINTER(ctypes.c_int), ctypes.POINTER(ctypes.c_int)) GetWindowText = ctypes.windll.user32.GetWindowTextW GetWindowTextLength = ctypes.windll.user32.GetWindowTextLengthW IsWindowVisible = ctypes.windll.user32.IsWindowVisible GetClassName = ctypes.windll.user32.GetClassNameW SwitchToThisWindow = ctypes.windll.user32.SwitchToThisWindow we_are_in_labview = None def get_title(hwnd): length = GetWindowTextLength(hwnd) buff = ctypes.create_unicode_buffer(length + 1) GetWindowText(hwnd, buff, length + 1) return buff.value def get_cls(hwnd): buff = ctypes.create_unicode_buffer(100) GetClassName(hwnd, buff, 99) return buff.value def foreach_window(hwnd, lParam): global we_are_in_labview title, cls = get_title(hwnd), get_cls(hwnd) if IsWindowVisible(hwnd): title, cls = get_title(hwnd), get_cls(hwnd) if (title, cls) in (('Start', 'Button'), ('', 'Shell_TrayWnd')) or \ cls == 'TeamViewer_TitleBarButtonClass': return True if we_are_in_labview is None: we_are_in_labview = cls.startswith('LV') else: if we_are_in_labview and cls.startswith('LV'): return True SwitchToThisWindow(hwnd, True) return False return True EnumWindows(EnumWindowsProc(foreach_window), 0)
      
      





実際、私はcとpythonで並行して記述しましたが、ここではコードが少し読みやすく、Visual Studioなしで実行できるため、バージョンをpythonで指定します(任意のバージョンのPythonをインストールする必要があります:2.xまたは3.x)。

Pythonのキーボードショートカットで実行されるスクリプトをハングさせることができますが、autohotkeyを使用すると簡単になります。



 #IfWinNotActive ahk_class PuTTY !`:: Run, C:\alttab\switch.py,,Hide
      
      





(ここでは、特定のパテプログラムでバインドが無効になっています)



パート2.アイコンをクリックしてviに切り替える



次に、対応するQuickqrop Show Open VIプラグインを完成させて、見た目を美しくし、キーボードナビゲーションを追加しました。



画像

画像




既存のShow Open VIsナビゲーションツールと比較して:

-プロジェクトエクスプローラーは、プロジェクト内のすべてのファイルではなく、開いているファイルのみを表示するという点で優れています。さらに、タスクバーとAlt-Tabリスト(図左)で不要なスペースを占有しません。

-アイコンの存在により、LVの組み込みウィンドウマネージャー(Ctrl-Alt-W)よりも優れています(図右側)。

-システムのAlt-Tabよりも優れているのは、複数のNIロゴではなく、まさにviアイコンである点です。



マウスの右ボタンをクリックして、フロントパネルまたはブロックダイアグラムに切り替える場所を選択できます。



オリジナルでは、このプラグインは非常に生っぽくてずさんでした。 すべてが重なり合っており、ウィンドウのサイズを通常のalt-tabウィンドウに匹敵するサイズに縮小すると、通常は機能しなくなります。



プラグインコードをgithubに投稿しました。 LV 2011および2014、x32およびx64でチェックイン。 インストールするには、いくつかのファイルをマイドキュメントの「正しい」サブディレクトリにコピーする必要があります。Labviewを再起動する必要はありません。 OpenGファイルライブラリに依存します。 readmeの詳細。



キーボードコントロールはこれを行いました:Ctrl-Space Ctrl-4で起動(他のプラグインと競合しないようにするため)、[Ctrl-] Tabまたは右矢印の次の項目、[Ctrl-] Shift-Tabまたは左矢印で前のものEnterまたはSpace-スイッチ、Esc-終了。



この余分なCtrl-Spaceを押さないようにする(クイックドロップメニューに入る)ために、自動ホットキーでこのスクリプトを使用して、たとえばCtrl-`で開始できます。



 #IfWinActive ahk_class LVDChild ^`b:: Send ^{Space} WinWait Quick Drop Send ^4
      
      





クイックドロップウィンドウの外観と、キーボードショートカットを受け取った後のクローズとの時間差は、約0.12秒でした。 原則として、これは悪いことではありませんが、目には「余分な」ウィンドウが見えます。 私のように、プラグインを実行するのにクイックドロップを使用しない人にとって、labview.iniのこのような文書化されていないオプションは役に立つかもしれません:



 QuickDropTransparency=100
      
      





すべての機能を維持しながら、QuickDropウィンドウを非表示にします(パラメーターは100%を意味します)。



これらの2つの改善(viアイコンとalt-tabの通常の動作の表示)をどのように組み合わせるかは考えませんでした-すべてのLabViewウィンドウは同じウィンドウグループにあり、GUIを使用する場合と同じ方法でプログラムでzオーダーシーケンス内を移動します:つまり、LabViewの内部またはLabViewの外部からの切り替えの種類に関する情報は失われます。 alt-tabを押すとストーリーを記憶できますが、この方法はマウスによる切り替えをキャッチしないため、普遍的ではありません。



最後に



説明されているスクリプトとプラグインをインストールすることで、次の可能性が得られます:Altキーを押すと、たとえば、ブラウザーとLabViewの特定のウィンドウを切り替えるのに非常に便利です。Ctrlキーを押すと、開いているviファイルのアイコンが表示され、マウスまたはキーボード。



All Articles