vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB & Windows API
Bin Fertig Hier der Code Teil: 2 
Autor: --Florian--
Datum: 08.09.03 20:52

Teil 2:
Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As _
  Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, _
  lpNumberOfBytesWritten As Long) As Long
Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As _
Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, _
lpNumberOfBytesWritten As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (lpDest As _
Any, lpSource As Any, ByVal cBytes As Long)
Private Declare Function GetParent Lib "user32" (ByVal hWnd As Long) As Long
 
Private Declare Function SendMessage& Lib "user32" Alias "SendMessageA" (ByVal _
  hWnd&, ByVal wMsg&, ByVal wParam&, lParam As Any)
Private Const LVM_FIRST = &H1000
Private Const LVM_GETTITEMCOUNT& = (LVM_FIRST + 4)
Private Const LVM_SETITEMPOSITION& = (LVM_FIRST + 15)
Private Const LVM_GETITEMPOSITION& = (LVM_FIRST + 16)
Private Const WM_COMMAND = &H111
Private Const IDM_TOGGLEAUTOARRANGE = &H7041
 
'=============================================================
Dim ptOriginal() As POINTAPI
Dim ptCurrent() As POINTAPI
Dim xScreen As Long, yScreen As Long
Dim bAutoArrange As Boolean
 
Public Sub RestoreDesktopIcons()
   Dim h As Long, nCount As Long, i As Long
   h = GetSysLVHwnd
   nCount = SendMessage(h, LVM_GETTITEMCOUNT, 0, 0&)
   For i = 0 To nCount - 1
       Call SendMessage(h, LVM_SETITEMPOSITION, i, ByVal CLng(ptOriginal(i).x + _
         ptOriginal(i).y * &H10000))
   Next
   If bAutoArrange Then
      Call SendMessage(GetParent(h), WM_COMMAND, IDM_TOGGLEAUTOARRANGE, ByVal _
        0&)
   End If
End Sub
 
Public Function StoreDeskTopInfo() As Boolean
   Dim pid As Long, tid As Long, lStyle As Long
   Dim hProcess As Long, lpSysShared As Long, dwSize As Long
   Dim nCount As Long, lWritten As Long, hFileMapping As Long
   Dim h As Long, i As Long
   h = GetSysLVHwnd
   If h = 0 Then Exit Function
   If (GetWindowLong(h, GWL_STYLE) And LVS_AUTOARRANGE) = LVS_AUTOARRANGE Then
      bAutoArrange = True
      Call SendMessage(GetParent(h), WM_COMMAND, IDM_TOGGLEAUTOARRANGE, ByVal _
        0&)
   End If
   tid = GetWindowThreadProcessId(h, pid)
   nCount = SendMessage(h, LVM_GETTITEMCOUNT, 0, 0&)
   If nCount = 0 Then Exit Function
   xScreen = Screen.Width \ Screen.TwipsPerPixelX
   yScreen = Screen.Height \ Screen.TwipsPerPixelY
   ReDim ptOriginal(nCount - 1)
   ReDim ptCurrent(nCount - 1)
   dwSize = Len(ptOriginal(0))
   If IsWindowsNT Then
      lpSysShared = GetMemSharedNT(pid, dwSize, hProcess)
      WriteProcessMemory hProcess, ByVal lpSysShared, ptOriginal(0), dwSize, _
        lWritten
      For i = 0 To nCount - 1
          SendMessage h, LVM_GETITEMPOSITION, i, ByVal lpSysShared
          ReadProcessMemory hProcess, ByVal lpSysShared, ptOriginal(i), dwSize, _
            lWritten
      Next i
      FreeMemSharedNT hProcess, lpSysShared, dwSize
   Else
      lpSysShared = GetMemShared95(dwSize, hFileMapping)
      CopyMemory ByVal lpSysShared, ptOriginal(0), dwSize
      For i = 0 To nCount - 1
          SendMessage h, LVM_GETITEMPOSITION, i, ByVal lpSysShared
          CopyMemory ptOriginal(i), ByVal lpSysShared, dwSize
          ptCurrent(i).x = xScreen / 2
          ptCurrent(i).y = yScreen / 2
      Next i
      FreeMemShared95 hFileMapping, lpSysShared
   End If
   StoreDeskTopInfo = True
End Function
 
Private Function GetSysLVHwnd() As Long
   Dim h As Long
   h = FindWindow("Progman", vbNullString)
   h = FindWindowEx(h, 0, "SHELLDLL_defVIEW", vbNullString)
   GetSysLVHwnd = FindWindowEx(h, 0, "SysListView32", vbNullString)
End Function
 
Public Function GetMemShared95(ByVal memSize As Long, hFile As Long) As Long
    hFile = CreateFileMapping(&HFFFFFFFF, 0, PAGE_READWRITE, 0, memSize, _
      vbNullString)
    GetMemShared95 = MapViewOfFile(hFile, FILE_MAP_ALL_ACCESS, 0, 0, 0)
End Function
 
Public Sub FreeMemShared95(ByVal hFile As Long, ByVal lpMem As Long)
    UnmapViewOfFile lpMem
    CloseHandle hFile
End Sub
 
Public Function GetMemSharedNT(ByVal pid As Long, ByVal memSize As Long, _
  hProcess As Long) As Long
    hProcess = OpenProcess(PROCESS_VM_OPERATION Or PROCESS_VM_READ Or _
    PROCESS_VM_WRITE, False, pid)
    GetMemSharedNT = VirtualAllocEx(ByVal hProcess, ByVal 0&, ByVal memSize, _
    MEM_RESERVE Or MEM_COMMIT, PAGE_READWRITE)
End Function
 
Public Sub FreeMemSharedNT(ByVal hProcess As Long, ByVal MemAddress As Long, _
  ByVal memSize As Long)
   Call VirtualFreeEx(hProcess, ByVal MemAddress, memSize, MEM_RELEASE)
   CloseHandle hProcess
End Sub
 
Public Function IsWindowsNT() As Boolean
   Dim verinfo As OSVERSIONINFO
   verinfo.dwOSVersionInfoSize = Len(verinfo)
   If (GetVersionEx(verinfo)) = 0 Then Exit Function
   If verinfo.dwPlatformId = 2 Then IsWindowsNT = True
End Function
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
DesktopListwiewItems Postion auslesen/setzen2.850--Florian--26.08.03 16:53
Re: DesktopListwiewItems Postion auslesen/setzen1.774--Florian--27.08.03 19:50
Re: DesktopListwiewItems Postion auslesen/setzen1.553E728.08.03 11:27
Re: DesktopListwiewItems Postion auslesen/setzen1.638--Florian--28.08.03 11:53
Re: DesktopListwiewItems Postion auslesen/setzen1.670E728.08.03 12:21
Re: DesktopListwiewItems Postion auslesen/setzen1.891planetULTRA28.08.03 21:47
Re: DesktopListwiewItems Postion auslesen/setzen1.597--Florian--28.08.03 21:55
Ich habe was gefunden1.671--Florian--31.08.03 02:46
Weiß denn keiner wie das bei XP Funktioniert???2.007--Florian--08.09.03 01:06
Re: Ich habe was gefunden1.729planetULTRA08.09.03 13:25
Re: Ich habe was gefunden1.624--Florian--08.09.03 14:05
Re: Ich habe was gefunden3.074planetULTRA08.09.03 19:05
Re: Ich habe was gefunden1.585planetULTRA08.09.03 19:07
Re: Ich habe was gefunden1.475--Florian--08.09.03 19:44
Bin Fertig Hier der Code Teil: 12.484--Florian--08.09.03 20:51
Bin Fertig Hier der Code Teil: 22.717--Florian--08.09.03 20:52
Re: Bin Fertig Hier der Code Teil: 21.799Urs17.03.04 16:49
Re: Bin Fertig Hier der Code Teil: 21.524CyberDreams01.04.04 12:46
Re: Bin Fertig Hier der Code Teil: 21.490planetULTRA01.04.04 14:08
Re: Bin Fertig Hier der Code Teil: 21.727planetULTRA01.04.04 14:29
Re: Bin Fertig Hier der Code Teil: 21.404CyberDreams01.04.04 14:36
Re: Bin Fertig Hier der Code Teil: 21.620--Florian--05.04.04 15:17

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel