shell32.dll コメントを取得したい。

解決


けんた  2005-11-27 22:41:43  No: 128289

はじめまして、けんたです

SHELL32.dll,-12696
SHELL32.dll,-22914

この形はshell32.dllに含まれる
コメントだと思うのですが
このコメントを取得する方法知りたいです
どうかお願いします


K.J.K.  2005-11-28 22:29:00  No: 128290

# 回答に非ず。
どこからその文字列を取得して、何に使おうとしていますか?
ちなみに、"コメント"という言葉で表記されたのははじめてみました。


我龍院忠太  2005-11-28 23:17:28  No: 128291

Resource Hackerを使ってみるとか。
http://www.angusj.com/resourcehacker/


けんた  2005-11-29 04:20:09  No: 128292

我龍院忠太さんありがとうございます
Resource Hackerで目的の物見れました
shell32.dllをResource Hackerで開いて
String Tableと言うツリーの中にありました。
これをVBのプログラムで読み込む方法ってあるのでしょうか?
開発環境の記入などしてませんでした
VB5.0 OSはXPです。


我龍院忠太  2005-11-29 16:32:57  No: 128293

>これをVBのプログラムで読み込む方法ってあるのでしょうか?
もちろん有るでしょうが、簡単かどうかはわかりません。
ゴリゴリやるとすれば、DLLの.rsrcセクションのツリーのノード
を辿っていくことになるでしょう。
私はと言えばリバースエンジニアリングくさいし、ちょっと食指が
動きませんが、こんなところが参考になるのかな。
http://www.interq.or.jp/chubu/r6/reasm/PE_FORMAT/intro.html


lib  2005-11-29 20:12:27  No: 128294

Win32 API関数の LoadString でどうぞ。


けんた  2005-11-30 07:26:33  No: 128295

lidさんありがとうございます。
LoadString にて出来ました!!

>我龍院忠太さん
 参考URLなどありがとうございました。
 詳しくみていないですけど勉強になりそうなページですので
 見て勉強したいと思います。
>K.J.K.さん
 言葉が足りなくどうもすみませんでした <(_ _)>

以下、テストで作成したプログラムです。
'----------------------------------------
Private Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Long

Private Declare Function LoadString Lib "user32" Alias "LoadStringA" (ByVal hInstance As Long, ByVal wID As Long, ByVal lpBuffer As String, ByVal nBufferMax As Long) As Long
'-----------------------------------------

Private Sub Command1_Click()
    Dim StrBuf  As String
    Dim hInst   As Long
    
    StrBuf = Space(256)
    hInst = GetModuleHandle("C:\WINDOWS\system32\shell32.dll")
    
    Call LoadString(hInst, 12696, StrBuf, Len(StrBuf))
    
    If InStr(StrBuf, vbNullChar) > 0 Then
        StrBuf = Left$(StrBuf, InStr(StrBuf, vbNullChar) - 1)
    End If

    Debug.Print StrBuf

End Sub

### 解決ですぅO(≧▽≦)O


けんた  2005-11-30 08:10:41  No: 128296

自己レス

LoadString 用で、dllから hInstance を求めるのに、

GetModuleHandleで記入しましたが・・・

Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long

 hInst = LoadLibrary("C:\WINDOWS\system32\shell32.dll")

が、正解でした。(^_^;)


ガッ  2005-11-30 08:15:49  No: 128297

んー…
LoadLibraryEx("hoge.dll",0,LOAD_LIBRARY_AS_DATAFILE Or DONT_RESOLVE_DLL_REFERENCES)
でもいいかも。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加