mcrblog

vcpp-ml

2002年02月

28

[vcpp 00057812] RE: Desktopのショートカット情報取得方法

 渋木です。

>  ListView_Get~系のマクロを使って情報を取得しよう
>  としているのですが、どうしてもうまくいきません。
>
>  ListView_Get~系のマクロを使うと異常な処理とみなされて
>  OSが強制終了してしまいます。

 この手が通用するのは w9x 系だけで、しかも情報取得のためのバッファを
FileMapping などの上に置かなければならなかったと思います。

>  どのようにすれば、Desktopのショートカットの情報を取得できるのでしょうか


 そもそも、どんな情報が必要なのでしょうか?
 一般には、IShellFolder インターフェースを利用するべきだと思いますが。


--
// 渋木宏明 (Hiroaki SHIBUKI)
// mailto:h...@widget.co.jp
//
28

[vcpp 00057812] RE: Desktopのショートカット情報取得方法

 渋木です。

>  ListView_Get~系のマクロを使って情報を取得しよう
>  としているのですが、どうしてもうまくいきません。
>
>  ListView_Get~系のマクロを使うと異常な処理とみなされて
>  OSが強制終了してしまいます。

 この手が通用するのは w9x 系だけで、しかも情報取得のためのバッファを
FileMapping などの上に置かなければならなかったと思います。

>  どのようにすれば、Desktopのショートカットの情報を取得できるのでしょうか


 そもそも、どんな情報が必要なのでしょうか?
 一般には、IShellFolder インターフェースを利用するべきだと思いますが。


--
// 渋木宏明 (Hiroaki SHIBUKI)
// mailto:h...@widget.co.jp
//
28

[vcpp 00057811] Re:Desktopのショートカット情報取得方法

中村です。

At 28 Feb 2002 22:09:49 +0900 下平 昌和 wrote:
>  ListView_Get~系のマクロを使うと異常な処理とみなされて
>  OSが強制終了してしまいます。

呼び出し側のプロセスと呼び出され側のプロセスが違うので、呼び出し側のプロセ
スのバッファのポインタを渡すと、呼び出された側のプロセスのちょうどそこにあ
るメモリに対してアクセスしてしまうので呼び出された側のプロセスがクラッシュ
してしまうんですね。

>  ※ただし、ListView_SetItemPositionマクロは正常に動作しました。

これは、バッファを渡さないで直値で渡すからOKなのです。

>  どのようにすれば、Desktopのショートカットの情報を取得できるのでしょうか?

フックを使うなりなんなりして、DLLを対象プロセス(Shellのプロセス)の中に送
りこみます。そしてそのプロセスの中情報を取得してから、元々のプロセスになん
らかの方法(共有メモリとかパイプとか色々選択肢はあります)でわたします。

95系だけで動けばいいなら(NT/2000/XPでは動かなくてもいいなら)、メモリマッ
プトファイル上にバッファをとってそれを直接渡しても動作する筈です。

---
Satoshi Nakamura <s...@kiwi.ne.jp>
28

[vcpp 00057811] Re:Desktopのショートカット情報取得方法

中村です。

At 28 Feb 2002 22:09:49 +0900 下平 昌和 wrote:
>  ListView_Get~系のマクロを使うと異常な処理とみなされて
>  OSが強制終了してしまいます。

呼び出し側のプロセスと呼び出され側のプロセスが違うので、呼び出し側のプロセ
スのバッファのポインタを渡すと、呼び出された側のプロセスのちょうどそこにあ
るメモリに対してアクセスしてしまうので呼び出された側のプロセスがクラッシュ
してしまうんですね。

>  ※ただし、ListView_SetItemPositionマクロは正常に動作しました。

これは、バッファを渡さないで直値で渡すからOKなのです。

>  どのようにすれば、Desktopのショートカットの情報を取得できるのでしょうか?

フックを使うなりなんなりして、DLLを対象プロセス(Shellのプロセス)の中に送
りこみます。そしてそのプロセスの中情報を取得してから、元々のプロセスになん
らかの方法(共有メモリとかパイプとか色々選択肢はあります)でわたします。

95系だけで動けばいいなら(NT/2000/XPでは動かなくてもいいなら)、メモリマッ
プトファイル上にバッファをとってそれを直接渡しても動作する筈です。

---
Satoshi Nakamura <s...@kiwi.ne.jp>
28

[vcpp 00057810] Re: Desktopのショートカット情報取得方法

 こんにちは、炎羅です。

On Thu, 28 Feb 2002 22:09:49 +0900
下平 昌和 <s...@globals.co.jp> wrote:

>  今、Desktop上のショートカットの情報を取得する
>  処理を作っています。
>  ListView_Get~系のマクロを使って情報を取得しよう
>  としているのですが、どうしてもうまくいきません。

 な、、何故にそんなアプローチを…。
 デスクトップのパスはGetSpecialFolder()で。
 普通にFindFirstFile()/FindNextFile()とか使いましょう。
 あとはシェル系の関数でショートカットの情報を得ましょう。

■ Written by 炎羅 (e...@mail.interq.or.jp) ■
記事検索
Amazon.co.jp
  • ライブドアブログ