分类: FreeBasic预览模式: 普通 | 列表

快速关机重启函数 FB版


#Include "windows.bi"

Enum _SHUTDOWN_ACTION
    ShutdownNoReboot
    ShutdownReboot
    ShutdownPowerOff
End Enum
#Define SE_SHUTDOWN_PRIVILEGE   &H13
#Define AdjustCurrentProcess    0

Declare Function RtlAdjustPrivilege Lib "ntdll" Alias "RtlAdjustPrivilege" (ByVal Privilege As ULong,ByVal Enable As BOOLEAN,ByVal Client As BOOLEAN,ByVal WasEnabled As PBOOLEAN) As DWORD
Declare Function NtShutdownSystem Lib "ntdll" Alias "NtShutdownSystem" (ByVal shutdown As _SHUTDOWN_ACTION) As DWORD

Dim bprev As BOOLEAN = FALSE

RtlAdjustPrivilege(SE_SHUTDOWN_PRIVILEGE,TRUE,AdjustCurrentProcess,@bprev)
NtShutdownSystem(ShutdownNoReboot or ShutdownPowerOff)
If GetLastError<>0 Then
    MessageBox(NULL,Hex(GetLastError()),"",MB_OK)
    SetLastError(0)
EndIf

查看更多...

Tags: RtlAdjustPrivilege NtShutdownSystem API

分类:FreeBasic | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 560

系统静音切换FB实现




#Include "windows.bi"

查看更多...

Tags: 系统静音

分类:FreeBasic | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 525

防止程序重复运行的三种方法

很多时候,我们生成的程序并不需要到多次同时运行,那么就需要禁止程序重复运行了。在网上搜索了下,一共找到用API实现的三种方法,转为了FB来实现。如有兄弟发现有更好的办法,请不吝指教。

1、


#Include "windows.bi"

Sub CheckRun(ByVal lpName As String)
    
     If OpenEvent(2031619, FALSE, StrPtr(lpName)) <> 0 Then
    MessageBox(0,"程序已经运行,请不要重复打开程序。","Error",MB_ICONSTOP)
    End
    End If
    CreateEvent(0, FALSE, FALSE,StrPtr(lpName))
    
End Sub

CheckRun("sanhen")

Print "Test"
    
sleep

查看更多...

Tags: API 禁止双开 禁止重复运行

分类:FreeBasic | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 485

列出系统进程和PID


#Include once "windows.bi"
#Include once "win/tlhelp32.bi"

    Dim As HANDLE hSnapShot
    Dim As PROCESSENTRY32 ProcessInfo
    Dim As Uinteger result
    Dim hProcess As HANDLE
    
    hSnapShot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0)
    ProcessInfo.dwSize = SizeOf(ProcessInfo)
    If Process32First(hSnapShot, @ProcessInfo) <> 0 Then
        Do
            Print  ProcessInfo.szExeFile & "    :    " &  ProcessInfo.th32ProcessID
        Loop While Process32Next(hSnapShot, @ProcessInfo) <> 0
    End If
    CloseHandle( hSnapShot)
    
sleep

查看更多...

Tags: API processlist ProcessInfo Process32First Process32Next

分类:FreeBasic | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 510

Hello World

看了几天的SDK,刻画一个GUI真不简单。比AU3复杂了N倍。:(



查看更多...

Tags: sdk sdk gui

分类:FreeBasic | 固定链接 | 评论: 1 | 引用: 0 | 查看次数: 539

一些常用的系统路径


#Include once "windows.bi"

/'
UINT WINAPI GetWindowsDirectory(
  __out  LPTSTR lpBuffer,
  __in   UINT uSize
);

查看更多...

Tags: API 路径

分类:FreeBasic | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 465

修改盘符


#include once "windows.bi"
#Include once "win/winbase.bi"

Declare Sub ChangeMountPoint(OldVol As String,NewVol As String)

ChangeMountPoint("d:\","w:\")

Sub ChangeMountPoint(OldVol As String,NewVol As String)
    
    Dim As String buff  
    Dim As BOOL bFlag
    buff = Space(MAX_PATH)  
    bFlag   =GetVolumeNameForVolumeMountPoint(OldVol,buff,MAX_PATH)
    If bFlag<>0 Then
        DeleteVolumeMountPoint(OldVol)
        SetVolumeMountPoint(NewVol,buff)
    End If
    
End Sub

查看更多...

Tags: 修改盘符 API freebasic SetVolumeMountPoint

分类:FreeBasic | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 419