C#.net 2002を使っています。
デスクトップのアイコンの位置をとりたいのですが、解らずに困っています。
まず、SendMessageを使い、LVM_GETITEMPOSITIONを送ってみた“ SendMessage(hWnd, LVM_GETITEMPOSITION, iD, ref pt) ”のですが、値が帰ってきませんでした。(ptはPOINT型)
次に、ネットで検索し、http://www.est.hi-ho.ne.jp/getchan/junks/junk01. … のページを見つけたのですが、C++なので私にはよく解らず、試しに*や&のところを、refを使ってそれなりに動くようにしましたが、やはり値は返ってきませんでした。
デスクトップのアイコンの位置をC#で取得する方法を御存知でしたら、教えてください。お願いします。
No.2ベストアンサー
- 回答日時:
using System.Runtime.InteropServices;
[DllImport("user32.dll")]
public static extern IntPtr FindWindow(string strclassName, string strWindowName);
[DllImport("user32", EntryPoint="FindWindowEx")]
public static extern IntPtr FindWindowEx(IntPtr hWnd1, IntPtr hWnd2, string lpsz1, string lpsz2);
[DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int wMsg, int wParam, int lParam);
public const int LVM_GETITEMCOUNT = 0x1004;
と宣言しておいて、
IntPtr hWnd;
hWnd = FindWindow("Progman", "Program Manager");
hWnd = FindWindowEx(hWnd, IntPtr.Zero, "SHELLDLL_DefView", null);
hWnd = FindWindowEx(hWnd, IntPtr.Zero, "SysListView32", null);
int nItemCount = SendMessage(hWnd, LVM_GETITEMCOUNT, 0, 0);
で、デスクトップのアイコンの数が取れます。こんな感じで、示されているページのソースをC#に変換して行けば良いでしょう。下のページを参考にしてみて下さい。残りの使用するAPIが載っています。がんばって下さい。時間が無いので私は出かけます(意地悪じゃありませんよ(^^;)
私が前に示したページは、あんまり役に立たなかったかもしれませんね。アイコンはListViewに格納されているので、ListViewをコントロールすれば良いかと思ったのですが、共有メモリ等あって、そう簡単ではないようです。すみませんでした。
参考URL:http://dotnetjunkies.com/WebLog/chris.taylor/arc …
この回答への補足
遅くなりまして申し訳ございませんでした。
LV_ITEMを全てPOINTに書き換え、少しコードをいじったところ、きちんと動きました。
(しかし、何故これで動くのか、というのは、私には難しすぎて解りませんでした(汗
回答、大変有り難うございました。
返答有り難うございます。
しかし、唯今時間が無く、チェックできないです。すみません。(学校が中間考査なんです・・・)
ソースを見る限りでは、凄く難しそうなことをしていますが・・・ 考査終了後、試してみます。
No.1
- 回答日時:
この回答への補足
返信遅れてすみません。
このクラスはどのように使えばよいのでしょうか??
Formの中での使い方ならなんとなく解ったのですが、デスクトップでの使い方が解りません・・・
お教え願います・・
(訂正。C#のバージョンは2002ではなく2003でした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- デスクトップパソコン デスクトップのアイコンの位置が勝手に変わる 2 2022/12/18 21:45
- Windows 10 ネットからファイルをデスクトップにダウンロードする際、既存のファイルの並びが崩れてしまう 4 2022/04/19 08:20
- Windows 10 アイコンの位置 1 2022/03/25 09:01
- Windows 10 アイコンの位置 3 2022/04/24 08:47
- Windows 10 PCのアイコンが消えてしまいました 3 2022/03/24 01:52
- Windows 7 ショートカットキー 応用編 どういうの主に使いますか? 2 2022/12/28 23:46
- フリーソフト アイコンとして保存アプリが不調 2 2022/04/16 06:39
- Excel(エクセル) 別インスタンスのエクセルを制御したい 1 2023/05/10 02:03
- Windows 10 デスクトップにファイルを保存すると既存のファイルアイコンの列に割り込むように保存されて困ってます 2 2022/04/25 19:00
- Chrome(クローム) ノートPCのデスクトップ画面全体にアイコンが 現れず、画面の右1/3位が背景の壁紙のままです 5 2022/09/20 17:44
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【選手権お題その3】この画像で一言【大喜利】
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・ちょっと先の未来クイズ第6問
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【C#】フォームをなめらかに移動
-
C#2005 Imagelistの余白の除去...
-
SwingでJtableのヘッダ行が表示...
-
C言語のポインターに関する警告
-
配列にnullを代入すると、null...
-
文字列の比較
-
ループ処理の際、最後だけ","を...
-
論理演算子”||”またはの入力方法
-
System.err. printlnとSystem.o...
-
StringBufferで改ページ処理を...
-
数字を読みに変換する方法について
-
入力文字列が数字かどうかの判別
-
Processingでマウスクリックで...
-
JAVA 文字色変更
-
hiddenの値が期待した値で取得...
-
エラーのStackTraceをString変...
-
javaが上手くいきません
-
Java配列でNullPointerExceptio...
-
DOSバッチで変数の値を変数名に...
-
1~100までの数字を表示し、か...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「配列定数は、イニシャライザ...
-
JAVA エラー 式の開始が不正で...
-
java spring でエラーが出て困...
-
DataSet(DataTable)の使い方
-
6桁の数字を重複なしでランダム...
-
メインが含まれていません
-
行の途中から読み込む方法
-
複数のボタンを配置し、それぞ...
-
javaでカレンダー作成
-
c# デリゲート関連の命名について
-
javaでcsvファイル読込時の改行...
-
C#で実行時にメソッドの返り値...
-
Java 初心者 int型の取り扱い方
-
式の型は配列型で int に解決済...
-
【C#】フォームをなめらかに移動
-
全組み合わせの出力
-
デスクトップのアイコンの位置...
-
(Swing)JTextFieldを半角のみ入...
-
二分探索木で例えば1〜10の値を...
-
SwingでJtableのヘッダ行が表示...
おすすめ情報