VB2008でデスクトップアイコンを移動する


dropitem92  2012-04-07 22:02:50  No: 147546  IP: [192.*.*.*]

VB2008でデスクトップアイコンを移動したいと思っています。
環境はwindows7です。
様々なサイトを探しましたがC言語やVB6.0は見つかりましたが、
vb2008では見つかりませんでした。
vb6.0のコードやハンドルについて調べ自分なりにコードを考えましたが
lngChildWindow = FindWindowEx(lngTopWindow, 0, "SHELLDLL_DefView", vbNullString)の部分でオーバーフローしてエラーになります。
どうすれば良いのか見当もつきません。
助けてください。

    Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function ListView_GetItemRect Lib "user32.dll" Alias "SendMessageA" (ByVal hWnd As Long, ByVal MSG As Long, ByVal lngIndex As Long, ByRef rc As Rectangle) As Long
    Private Declare Function ListView_SetItemPosition Lib "user32.dll" Alias "SendMessageA" (ByVal hWnd As Long, ByVal MSG As Long, ByVal lngIndex As Long, ByVal lngPosition As Long) As Long
    Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Integer, ByVal hWnd2 As Integer, ByVal lpsz1 As String, ByVal lpsz2 As String) As Integer    

    Private Const LVM_GETITEMRECT As Long = &H100E
    Private Const LVM_SETITEMPOSITION As Long = &H100F

        Dim lngTopWindow As Long
        Dim lngChildWindow As Long
        Dim lngSysListView32 As Long
        Dim rc As Rectangle
            lngTopWindow = FindWindow("Progman", "Program Manager")
            If lngTopWindow Then
                lngChildWindow = FindWindowEx(lngTopWindow, 0, "SHELLDLL_DefView", vbNullString)
                If lngChildWindow Then
                    lngSysListView32 = FindWindowEx(lngChildWindow, 0, "SysListView32", vbNullString)
                    If lngSysListView32 Then

                        ListView_GetItemRect(lngSysListView32, LVM_GETITEMRECT, 0, rc)

                        ListView_SetItemPosition(lngSysListView32, LVM_SETITEMPOSITION, 0, rc.Top * &H10000 + rc.Left + 300)

                    End If
                End If
            End If

編集 削除
オショウ  2012-04-09 11:17:35  No: 147547  IP: [192.*.*.*]

Win7 ならWinXPと同様の方法では取得できないはずです。
ましてVB6のコードが主ですと、ただ単に変換しても・・・

因みに掲載されているコードはVB6コードのままですので、VB2008
では、正しく動作しませんネ!

http://social.msdn.microsoft.com/Forums/en/vbgeneral/thread/2f2d3924-5485-4f94-be8d-3cff960455ae

アイコンの位置を取得するコードではありませんが、デスクトップ
のアイコンのテキスト情報を取得するコードです。

私は試してませんが、参考までに・・・

以上。

編集 削除