問題タブ [syslistview32]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
769 参照

windows - 別のプロセスからリストビューデータを読み取る

これは一種のGUI自動化アプリケーションであり、別のプロセスのリストビューからデータを読み取りたいと考えています。

リストビュークラスはSysListView32であり、次のスタイルが設定されていますLVS_OWNERDRAWFIXED

通常、次の手順を使用してリストビューからテキストを読み取ることができます

  • 他のプロセスのメモリスペースにメモリを割り当てます
  • そのプロセスで割り当てられたバッファのポインタでテキストを読むためにlistviewにメッセージを送信します
  • バッファを読み取る

リストビューがownerdrawnでない場合は正常に機能しますが、この場合、listviewは所有者によって描画されているように見えます。つまり、listitemにはデータがありません。

私が説明した方法または任意の方法によって、あるいはAPIまたはその他の方法をフックすることによって、そのようなリストビューからテキストを読み取ることは可能ですか?

0 投票する
1 に答える
2427 参照

c - CでSysListView32アイテムを列挙する

私が見つけたすべての例はC#に関連していましたが、私はそれに慣れていません。私の仕事は、テストのためのある種の自動化を提供することです。最初のボタンがSysListView32内にあるインストーラーがあります。私の目標はそれらを選択し、名前でボタンを選択してクリックすることです。最後の部分は明らかです。

しかし、SysListView32に関しては、Cでそのオブジェクトと名前を抽出する方法を理解できません。

0 投票する
1 に答える
1448 参照

c# - AutomationElement (SysListView32 アイテム) の選択

外部プロセスの SysListView32 項目を選択したい。これまでのコードは次のとおりで、機能しています (アイテムのテキストとインデックスを取得できます) が、現在のアイテムを選択するにはどうすればよいですか?

0 投票する
1 に答える
973 参照

c# - SysHeader32 から列のヘッダー テキストを取得します

私は、他のアプリ (管理されていない) からデータをキャプチャする必要がある C# アプリケーションに取り組んでいます。

この別のアプリケーションには多くの SysListView32 コントロールがあり、特定の SysListView32 コントロールのデータを取得する必要がありますが、この特定のコントロールを取得するために使用できるのは、列のヘッダー (SysHeader32) テキストだけです。これらは SysListView32 ごとに異なります。コントロール。

すべての SysListView32 コントロールからデータ (行と列のすべてのテキスト) をキャプチャしましたが、ヘッダー列のテキストをキャプチャできません。

誰でも私を助けることができますか?

私の悪い英語に感謝し、申し訳ありません。

0 投票する
0 に答える
214 参照

listview - マウスで仮想リストビューで複数のアイテムを選択するときに過剰なメッセージを防ぐ方法は?

Visual Basic 6 で独自の仮想リストビュー コントロールの作成に取り組んできました。UserControl で SysListView32 クラスをサブクラス化し、項目の追加、削除、さらには並べ替えを行うコントロールを正常にコーディングできました。Virutal Listview コントロール (LVS_OWNERDATAウィンドウ スタイル セット) の場合と同様に、これらすべてが高速に動作します。ただし、マウスをクリックしてドラッグして複数のアイテムのマーキー選択を開始すると (LVS_SINGLESELウィンドウ スタイルが存在しない場合)、選択プロセスはかなり遅くなり、リストの下に行くほど多くのアイテムが選択されるにつれて遅くなります。これは、リストに追加されたアイテムが 2 ~ 300 個しかない場合でも発生します。効果を確認するのに最適なサンプル数は、約 500 アイテムです。

コントロールの作成に取り組んでいるときに、SysListView32 クラスが通常取得する考えられるほぼすべてのメッセージと、UserControl が取得する必要があるすべての通知コードを追加して、DEBUGFLAG 定数変数の変更時に使用できるようにしました。何が起こっているかを正確に教えてくれるVB6のイミディエイトペイン。コントロールによって送受信されるメッセージをさらに調査したところ、NM_CUSTOMDRAWアイテム '0'、'1'、'2' などで始まるアイテム インデックスを使用して、通知コードが本来よりも頻繁に発生していることに気付きました。それらのアイテムが実際に表示されていない場合でも、選択の新しい「波」ごとにオンになります。

戻り値NM_CUSTOMDRAWを送信することで、ビュー内にないアイテムのメッセージを処理しようとしました。最初の通知では、関連するアイテムのインデックスが保存されないCDRF_SKIPDEFAULTことに注意してください。再描画されているアイテムのアイテム インデックスを取得するにはNM_CUSTOMDRAW、値を使用して最初の通知を処理する必要があります。CDRF_NOTIFYITEMDRAW

ただし、これで問題は解決しません。アイテムが再描画されなくても、これらのメッセージがバックグラウンドで送信されているという事実は、複数のアイテムの選択を遅くするのに十分であるようです. 各ウェーブの前に通知がありLVN_ODCACHEHINT、実際にはそうであってはならないときに、「0」から最後の表示項目インデックスまでの範囲が与えられます。

すべてのコードを提供する必要はありません。私は自分のコードで過度に凝ったことはしていません. を使用するときのコントロールのデフォルトの動作であるようにLVS_OWNERDATA見えるので、問題の解決に役立つとは思えません. ただし、問題を解決するために何か凝ったことをする必要があるのではないかと思います。

私もこの質問を見ましたが、リフレクションは私の知識の範囲を超えており、サブクラス化されたウィンドウ プロシージャが受け取ったWM_REFLECT_NOTIFY.

前もって感謝します。

0 投票する
0 に答える
1073 参照

listview - Autoit を使用して ListView のチェックボックス項目をチェックする

Autoit を使用して、Windows の [マイク設定] ダイアログ ボックスでマイクの拡張機能を自動化しています。既にチェックされているかどうかに関係なく、SysListView32 のチェックボックス項目をチェックしたい。スペースを送信して切り替えることができますが、既にチェックされている場合はアイテムのチェックが解除されます。いずれ確認したい。どうやってするか?

SysListView32 の各チェックボックス項目をループしてチェックするにはどうすればよいですか? すべての項目がチェックボックス項目です。Windowsのサウンド設定ダイアログボックスにあるSysListView32を作成しませんでした。解決策はありますか?

0 投票する
1 に答える
484 参照

windows - 100万行のListView

潜在的に数百万行をホストする可能性がありSysListView32、テキスト A、B、C の 3 つの列がそれぞれ 256 文字未満です。

列 B に多くの繰り返しがあり (例: 列 A はファイル名、列 B はパス、各行はファイルシステムのファイル)、10 万の異なる値 (数百万ではなく) しかないとします。

ListViewGUI要素の列BのコンテンツのRAMでの重複を避けることはできますか?

重複データの代わりに、配列要素 (列 B の異なる値の 100k 要素配列から取得) へのポインターListViewのみでa を埋めることはできますか?

これを変更して機能させるにはどうすればよいですか?