ショート質問
はそれがuser32.dll
を使用して、選択したアプリケーション(Visioの2010)のためのシステムカーソルを変更することは可能ですか?VBAは、カーソルの変更をuser32.dllの呼び出し
背景
私は矢印としてだけショーにカーソルを強制しようとする、またはより良いまだ、私のVisioのアプリケーションは、常にそれをします「待って」されたときになるように、矢印ポインタに「砂時計」のポインタを再マッピングしています矢印を表示します。これまで私はuser32.dll
をロードし、SetSystemCursor
、LoadCursorA
、およびShowCursor
と呼ぶことができました。行われたすべてのコールのうち、ShowCursor
だけが期待通りに動作します。
LoadCursor
とSetSystemCursor
が実際に行うことを完全に理解していない可能性があります。私は見つけることができる最良の文書をリンクしていますが、IMOには欠けています。
の考えを閉じる
はuser32.dll
APIを使用するよりも、これをむしろ達成するためのより良い方法はありますか? Visio 2010では、マウスポインタを制御することはできません。正確な動作のための
フォローアップ
チェックアウトthis post私は周りを取得しようとしています。私はそれがビジーであることをアプリケーションから隠すことを試みていないことに注意してください。 Visioのシェイプデータをプログラムで変更するたびに、砂時計がちらつくのを避けようとしています。 Hereは、VisioGuyポストで言及したVisioの例へのリンクです。添付ファイルを表示するには、サイトのメンバでなければなりません。
元々、LoadCursor
とSetSystemCursor
を使用するつもりはなく、私はPinvoke.net(SetSystemCursor
)のドキュメントのためにのみ関連付けを行っていました。私はSetSystemCursor
のMSDNのマニュアルを見ていませんでした。 Pinvokeのヒントをお寄せいただきありがとうございます...私はなぜ両方のMSDNをプルアップしなかったのか分かりません。
確かに、私はずっとシステムDLLで遊んだことはありません。私の主な知識ベースは組込みシステムとOSに依存しない言語(つまりPython)ですので、グローバルシステムエラーの原因となるSetSystemCursor
に関するヒントは、私が本当に必要とする情報の種類です。
Visioはいつでもカーソルを変更できます。カーソルが砂時計に変更されたときに認識してから、ポインタにリセットする必要があります。これは実用的ではありません、それは忙しい時に砂時計に変わるので、変更カーソルマクロを実行できません。 –
@MattH:私は、変化を監視することが現実的ではないことに同意します。Visioで矢印キーを使用して砂時計のガラスのデカールを何らかの方法で再マップすることができます。私が取り組もうとしている正確な問題を見るために私の編集をチェックしてください。 –
私はあなたが 'LoadCursor'と' SetSystemCursor'を言及しているのを見ます - 私はあなたが後者のための[docs]を読んだと仮定します(http://msdn.microsoft.com/en-us/library/windows/desktop/ms648395)。 (v = vs.85).aspx): "* hcur *は、LoadCursor関数を使用してロードされたカーソルにできません。" –