English
Source / code snippets

detect Systemordner

 

CompileMarkSeparation
Source wurde am 15.07.2007 aus der MMJ-Quellcodesammlung (Dietmar Horn) in die Babyklappe auf XProfan.Com abgelegt:
Systemordner ermitteln
Laufwerk- und System-Infos abfragen
######################################
Short-System-Info
######################################
System-Informationen abfragen
ab Profan 7.X
Andreas Miethe Dezember 2000
######################################
--------------------------------------
Funktionen ( WIN-API )
--------------------------------------
DEF GetVersionEx(1) ! Kernel32,GetVersionExA
DEF GlobalMemoryStatus(1) ! Kernel32,GlobalMemoryStatus
DEF GetDiskFreeSpace(5) ! Kernel32,GetDiskFreeSpaceA
DEF GetDiskFreeSpaceEx(4) !KERNEL32,GetDiskFreeSpaceExA
DEf GetLogicalDriveStrings(2) ! KERNEL32,GetLogicalDriveStringsA
Def GetDriveType(1) ! KERNEL32,GetDriveTypeA
Def GetVolumeInformation(8) ! Kernel32.dll,GetVolumeInformationA
Def GetStockObject(1) !GDI32,GetStockObject
Def SetDefaultGUIFont(1) SendMessage(&(1),$30,Val(GetStockObject($11)),1)
DEF SetWindowlong(3) ! User32,SetWindowLongA
DEF @GSFP(4) ! Shell32,SHGetSpecialFolderPathA
DEF @GTP(2) ! Kernel32,GetTempPathA
DEF GetWindowlong(2) ! User32,GetWindowLongA
DEf LockWindowUpdate(1) ! USER32,LockWindowUpdate
DEf GetColor(1) ! User32,GetSysColor
--------------------------------------
Konstanten
--------------------------------------
DEf &Ver_Platform_Win32_Windows 1
DEf &Ver_Platform_Win32_NT 2
--------------------------------------
--------------------------------------
Strukturen
--------------------------------------
Struct OSVERSIONINFO = dwOSVersionInfoSize&,dwMajorVersion&,dwMinorVersion&,
dwBuildNumber&,dwPlatformId&,szCSDVersion$(128)
Struct MEMORYSTATUS  = dwLenght&,dwMemoryLaod&,dwTotalPhys&,dwAvailPhys&,
dwTotalPageFile&,dwAvailPageFile&,
dwTotalVirtual&,dwAvailVirtual&
Struct LW            = LWString$(104)
Struct RootString    = ROOT$(4)
Struct VolumeName    = VN$(260)
Struct FileSystemBuf = FS$(260)
Struct PfadInfo      = PfadInf$(260)
--------------------------------------
--------------------------------------
Globale Variablen und private Definitionen
--------------------------------------
Declare OS#,MEM#,LW#,RS#,VN#,FS#
Declare Liste&,SystemInfo&,LaufwerksInfo&,PfadInfo&,Ende&
Declare Ende%,St$
Declare Pfad#
Usermessages $210
Def HiWord(1) Div&(&(1),$10000)
Def LoWord(1) And(&(1),$FFFF)
--------------------------------------
--------------------------------------
Prozeduren
--------------------------------------

Proc GetOSInfo

    Declare Ret&,Winver$
    Dim OS#,OSVERSIONINFO
    OS#.dwOSVersionInfoSize& = 148
    Ret& = GetVersionEx(OS#)

    If OS#.dwPlatformId& = &Ver_Platform_Win32_Windows

        If OS#.dwMajorVersion& = 4

            Case OS#.dwMinorVersion& = 0  : Winver$ = Windows 95
            Case OS#.dwMinorVersion& = 10 : Winver$ = Windows 98
            Case OS#.dwMinorVersion& = 90 : Winver$ = Windows ME

        Endif

    ElseIf OS#.dwPlatformId& = &Ver_Platform_Win32_NT

        Case OS#.dwMajorVersion& = 4 : Winver$ = Windows NT 4
        Case OS#.dwMajorVersion& = 5 : Winver$ = Windows 2000

    Endif

    Dispose OS#
    Return Winver$

EndProc

Proc GetMemoryStatus

    Decimals 2
    Dim MEM#,MEMORYSTATUS
    GlobalMemoryStatus(MEM#)
    AddString(Liste&,Arbeitsspeicher benutzt : + Str$(MEM#.dwMemoryLaod&) +  %)
    AddString(Liste&,Arbeitsspeicher total :  + Format$(###,###,###.##,Str$(MEM#.dwTotalPhys&/1024)) +  KB)
    AddString(Liste&,Arbeitsspeicher verfügbar:  + Format$(###,###,###.##,Str$(MEM#.dwAvailPhys&/1024)) +  KB)
    AddString(Liste&,Virtueller Speicher total :  + Format$(###,###,###.##,Str$(MEM#.dwTotalVirtual&/1024)) +  KB)
    AddString(Liste&,Virtueller Speicher verfuegbar :  + Format$(###,###,###.##,Str$(MEM#.dwAvailVirtual&/1024)) +  KB)
    Dispose MEM#

EndProc

Proc GetDiskSpace

    Declare lw#,freiuser#,total#,frei#,Lolong&,Hilong&,loergebnis!,hiergebnis!
    Declare Gesamt!,Frei!
    Declare alles!
    Declare RootPathName$
    Declare Ret&,Ver&,Z$
    Dim lw#,5
    Dim frei#,8
    Dim total#,8
    Dim freiuser#,8
    Ver& = 65
    Addstring(Liste&,)
    Addstring(Liste&,Speicherplatz :)

    Whilenot Ver& = 91

        RootPathName$ = CHR$(Ver&)+:
        String lw#,0=RootPathName$
        Ret& = GetDiskFreeSpaceEx(lw#,freiuser#,total#,frei#)

        If ret& > 0

            Let loergebnis!=Long(total#,0)
            Let hiergebnis!=Long(total#,4)
            case @Lt(loergebnis!,0): let loergebnis!= @Add(loergebnis!, @Pow(2,32))
            Let Gesamt!= @Add(@Mul(hiergebnis!, @Pow(2,32)), loergebnis!)
            Z$ = RootPathName$ + Format$(###,###,##0.##,(Gesamt!) / 1024 / 1024)
            Z$ = Z$ +  MB frei  -
            Let loergebnis!=Long(frei#,0)
            Let hiergebnis!=Long(frei#,4)
            case @Lt(hiergebnis!,0): let hiergebnis!= @Add(hiergebnis!, @Pow(2,32))
            case @Lt(loergebnis!,0): let loergebnis!= @Add(loergebnis!, @Pow(2,32))
            Let Frei!= @Add(@Mul(hiergebnis!, @Pow(2,32)), loergebnis!)
            Z$ = Z$ + Format$(###,###,##0.##,(Frei!) / 1024 / 1024)
            Z$ = Z$ +  MB frei  -
            Z$ = Z$ + Format$(###,###,##0.##,(Gesamt!-Frei!) / 1024 / 1024)
            Z$ = Z$ +  MB belegt
            Addstring(Liste&,z$)
            alles! = alles!+frei!

        Endif

        Ver& = Ver& +1

    EndWhile

    Addstring(Liste&,Format$(Frei insgesamt : ###,###,##0.## MB,alles! / 1024 / 1024 ))
    dispose lw#

EndProc

Proc GetVolumeInfos

    Parameters ROOT$
    Declare RET&,SerialNumber&,MCL&,Flag&
    Dim RS#,RootString
    Dim VN#,VolumeName
    Dim FS#,FileSystemBuf
    RS#.ROOT$ = ROOT$
    RET& = GetVolumeInformation(RS#,VN#,260,Addr(Serialnumber&),Addr(MCL&),Addr(Flag&),FS#,260)
    Case RET& > 0 : ST$ = ST$ + [+String$(VN#,0)+],
    Case RET& > 0 : ST$ = ST$ + Seriennummer : + Left$(Hex$(Serialnumber&),4)+-+Right$(Hex$(Serialnumber&),4)
    Case RET& > 0 : ST$ = ST$ +   +String$(FS#,0)
    Case RET& = 0 : ST$ = ST$ +
    Dispose RS#
    Dispose VN#
    Dispose FS#

EndProc

Proc GetLogicalDrives

    Decimals 0
    Declare LWZeichen&,Laufwerke&,LZ&,LW$
    Dim LW#,LW
    LWZeichen& = 104
    Laufwerke& = GetLogicalDriveStrings(LWZeichen&,LW#)
    Addstring(Liste&,Installierte Laufwerke : ,+ Laufwerke& / 4)

    Whilenot LZ& = Laufwerke&

        ST$ = Upper$(String$(LW#,LZ&));
        LW$ = String$(LW#,LZ&)
        Case GetDriveType(Addr(LW$)) = 2 : ST$ = ST$ +  Wechselmedium
        Case GetDriveType(Addr(LW$)) = 3 : ST$ = ST$ +  Festplatte
        Case GetDriveType(Addr(LW$)) = 4 : ST$ = ST$ +  Netzlaufwerk
        Case GetDriveType(Addr(LW$)) = 5 : ST$ = ST$ +  CD-ROM
        Case GetDriveType(Addr(LW$)) = 6 : ST$ = ST$ +  RAM-Disk
        Case GetDriveType(Addr(LW$)) = 0 : ST$ = ST$ +  unbekannt
        GetVolumeInfos lw$
        AddString(Liste&,ST$)
        LZ& = LZ& + 4

    EndWhile

    Dispose LW#

Endproc

Proc Pfade

    Declare x%
    Dim pfad#,PfadInfo

    Whilenot gt(x%,80)

        @GSFP(%hwnd,pfad#,x%,0)
        Case gt$(pfad#.PfadInf$,):addstring(Liste&,CSIDL + format$(0000,str$(x%))+ = +String$(Pfad#,0))
        inc x%

    Endwhile

    @GTP(260,Pfad#)
    AddString(Liste&,)
    AddString(Liste&,Windows-Ordner : +$WinPath)
    AddString(Liste&,System-Ordner : +$SysPath)
    AddString(Liste&,Temp-Ordner : + pfad#.PfadInf$)
    Dispose Pfad#

Endproc

Proc Aufbau

    Liste& = @Create(ListBox,%HWND,,0,0,0,0)
    SetWindowLong(Liste&,-20,$200)
    SetDefaultGUIFont(Liste&)
    SetWindowpos Liste& = 200,20-420,400
    SystemInfo& = @Create(Button,%HWND,SystemInfos,10,20,170,48)
    LaufwerksInfo& = @Create(Button,%HWND,LaufwerksInfos,10,70,170,48)
    PfadInfo& = @Create(Button,%HWND,PfadInfos,10,120,170,48)
    Ende& = @Create(Button,%HWND,Ende,10,170,170,48)
    SetDefaultGUIFont(SystemInfo&)
    SetDefaultGUIFont(LaufwerksInfo&)
    SetDefaultGUIFont(PfadInfo&)
    SetDefaultGUIFont(Ende&)

EndProc

--------------------------------------
--------------------------------------
Hauptprogramm
--------------------------------------
SetTrueColor 1
WindowTitle System-Infos...
WindowStyle 27
Window %maxx+1,0-640,480
Cls GetColor(15)
UseIcon A
Aufbau
SetWindowPos %HWND = 10,10-640,480

Whilenot Ende%

    Waitinput

    If AND(@GetFocus(SystemInfo&),neq(LoWord(&UWparam),513))

        LockWindowUpdate(%hwnd)
        SendMessage(Liste&,$0184,0,0)
        GetOSInfo
        AddString(Liste&,Betriebssystem = + @$(0))
        AddString(Liste&,)
        AddString(Liste&,Speicherauslastung :)
        GetMemoryStatus
        LockWindowUpdate(0)

    ElseIf AND(@GetFocus(LaufwerksInfo&),neq(LoWord(&UWparam),513))

        LockWindowUpdate(%hwnd)
        SendMessage(Liste&,$0184,0,0)
        GetLogicalDrives
        GetDiskSpace
        LockWindowUpdate(0)

    ElseIf AND(@GetFocus(PfadInfo&),neq(LoWord(&UWparam),513))

        LockWindowUpdate(%hwnd)
        SendMessage(Liste&,$0184,0,0)
        AddString(Liste&,Pfadinfos :)
        AddString(Liste&,)
        Pfade
        LockWindowUpdate(0)

    ElseIf AND(@GetFocus(Ende&),neq(LoWord(&UWparam),513))

        Let Ende% = 1

    Endif

EndWhile

End
-------------------------
class=s2>-------------
 
07/15/07  
 



Zum Quelltext


Topictitle, max. 100 characters.
 

Systemprofile:

no Systemprofil laid out. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Please register circa a Posting To verfassen.
 

Topic-Options

1.308 Views

Untitledvor 0 min.
AndreasS12/23/18
iF01/03/16

Themeninformationen

this Topic has 1 subscriber:

unbekannt (1x)


Admins  |  AGB  |  Applications  |  Authors  |  Chat  |  Privacy Policy  |  Download  |  Entrance  |  Help  |  Merchantportal  |  Imprint  |  Mart  |  Interfaces  |  SDK  |  Services  |  Games  |  Search  |  Support

One proposition all XProfan, The there's!


My XProfan
Private Messages
Own Storage Forum
Topics-Remember-List
Own Posts
Own Topics
Clipboard
Log off
 Deutsch English Français Español Italia
Translations

Privacy Policy


we use Cookies only as Session-Cookies because of the technical necessity and with us there no Cookies of Drittanbietern.

If you here on our Website click or navigate, stimmst You ours registration of Information in our Cookies on XProfan.Net To.

further Information To our Cookies and moreover, How You The control above keep, find You in ours nachfolgenden Datenschutzerklärung.


all rightDatenschutzerklärung
i want none Cookie