国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

用VB6.0自制壓縮與解壓縮程序(三)

2024-07-21 02:21:05
字體:
來源:轉載
供稿:網友

用記事本打開modmain.bas文件,copy以下內容到其中:



attribute vb_name = "modmain"



' ==============================================

' 信息打包與展開 (啟動模塊)

'

' 功能 :利用系統所存在的資源自作壓縮與解壓縮程序

'

' 作 者 :謝家峰

' 整理日期 :2004-08-08

' email :[email protected]

'

' ==============================================

'

option explicit



public windowspath as string

public windowssyspath as string



sub main()

dim boottrappath as string

dim setupfilepath as string

dim regexefilepath as string



dim reginfo() as string

dim regstr() as string

dim regfilename as string

dim str as string



dim resultat as long

dim resultat2 as long

dim res as double

dim startinfo as startupinfo

dim procinfo as process_information

dim secu as security_attributes



dim i as integer



if app.previnstance then msgbox "系統已啟動!", , app.exename: end

'獲得系統安裝目錄

windowspath = getwindowsdir

windowssyspath = getwindowssysdir



load frmmain

frmmain.show

end sub



用記事本打開modapi.bas文件,copy以下內容到其中:



attribute vb_name = "modapi"



' ==============================================

' 信息打包與展開 (所調用的api及通用函數模塊)

'

' 功能 :利用系統所存在的資源自作壓縮與解壓縮程序

'

' 作 者 :謝家峰

' 整理日期 :2004-08-08

' email :[email protected]

'

' ==============================================

'

option explicit



public declare function getprivateprofilestring lib "kernel32" alias "getprivateprofilestringa" (byval lpapplicationname as string, byval lpkeyname as any, byval lpdefault as string, byval lpreturnedstring as string, byval nsize as long, byval lpfilename as string) as long

public declare function writeprivateprofilestring lib "kernel32" alias "writeprivateprofilestringa" (byval lpapplicationname as string, byval lpkeyname as any, byval lpstring as any, byval lpfilename as string) as long



public declare function createprocess lib "kernel32" alias "createprocessa" (byval lpapplicationname as string, byval lpcommandline as string, lpprocessattributes as security_attributes, lpthreadattributes as security_attributes, byval binherithandles as long, byval dwcreationflags as long, lpenvironment as any, byval lpcurrentdriectory as string, lpstartupinfo as startupinfo, lpprocessinformation as process_information) as long

public declare function waitforsingleobject lib "kernel32" (byval hhandle as long, byval dwmilliseconds as long) as long

public declare function closehandle lib "kernel32" (byval hobject as long) as long



public declare function getshortpathname lib "kernel32" alias "getshortpathnamea" (byval lpszlongpath as string, byval lpszshortpath as string, byval cchbuffer as long) as long

public declare function getwindowsdirectory lib "kernel32" alias "getwindowsdirectorya" (byval lpbuffer as string, byval nsize as long) as long

public declare function getsystemdirectory lib "kernel32" alias "getsystemdirectorya" (byval lpbuffer as string, byval nsize as long) as long



public const gstrsep_dir$ = "/"

public const gstrsep_urldir$ = "/"

public const gintmax_size% = 255



public const infinite = &hffff



public type startupinfo

cb as long

lpreserved as string

lpdesktop as string

lptitle as string

dwx as long

dwy as long

dwxsize as long

dwysize as long

dwxcountchars as long

dwycountchars as long

dwfillattribute as long

dwflags as long

wshowwindow as integer

cbreserved2 as integer

lpreserved2 as long

hstdinput as long

hstdoutput as long

hstderror as long

end type



public type process_information

hprocess as long

hthread as long

dwprocessid as long

dwthreadid as long

end type



public type security_attributes

nlength as long

lpsecuritydescriptor as long

binherithandle as long

end type





function stripterminator(byval strstring as string) as string

dim intzeropos as integer



intzeropos = instr(strstring, chr$(0))

if intzeropos > 0 then

stripterminator = left$(strstring, intzeropos - 1)

else

stripterminator = strstring

end if

end function



' -----------------------------------------------------------

' 給目錄添加分割線

'

' -----------------------------------------------------------

'

sub adddirsep(strpathname as string)

if right(trim(strpathname), len(gstrsep_urldir)) <> gstrsep_urldir and _

right(trim(strpathname), len(gstrsep_dir)) <> gstrsep_dir then

strpathname = rtrim$(strpathname) & gstrsep_dir

end if

end sub



' -----------------------------------------------------------

' 調用api函數獲得windows的系統目錄

'

' -----------------------------------------------------------

'

function getwindowssysdir() as string

dim strbuf as string



strbuf = space$(gintmax_size)

if getsystemdirectory(strbuf, gintmax_size) > 0 then

strbuf = stripterminator(strbuf)

adddirsep strbuf



getwindowssysdir = strbuf

else

getwindowssysdir = vbnullstring

end if

end function



' -----------------------------------------------------------

' 調用api函數獲取windows目錄

'

' -----------------------------------------------------------

'

function getwindowsdir() as string

dim strbuf as string



strbuf = space$(gintmax_size)



if getwindowsdirectory(strbuf, gintmax_size) > 0 then

strbuf = stripterminator$(strbuf)

adddirsep strbuf



getwindowsdir = strbuf

else

getwindowsdir = vbnullstring

end if

end function



' --------------------------------------

' 測試目錄是否存在

'

' --------------------------------------

'

public function direxists(path as string) as boolean

on error resume next



'對于網絡地址采用*.*形式

if instr(path, "//") then

direxists = (dir$(path & "/*.*") <> "")

else

direxists = (dir$(path & "/nul") <> "")

end if

end function



' --------------------------------------

' 建立文件夾(含多層結構)

'

' --------------------------------------

'

public sub createfloder(floder as string)

dim i as integer

dim path as string

dim floderstr() as string



on error resume next

floderstr = split(floder, "/")

path = floderstr(0)

for i = 1 to ubound(floderstr) - 1

path = path & "/" & floderstr(i)

if not direxists(path) then

mkdir path

end if

next

end sub



' --------------------------------------

' 獲得長文件名的短文件名

'

' --------------------------------------

'

function getshortfilename(filename as string) as string

dim str as string

str = string(lenb(filename), chr(0))



if getshortpathname(filename, str, lenb(filename)) <> 0 then

str = left(str, instr(str, vbnullchar) - 1)

if str = "" then

getshortfilename = filename

else

getshortfilename = str

end if

else

getshortfilename = filename

end if

end function



' --------------------------------------

' 獲得文件名

'

' --------------------------------------

'

public function getfilename(filenamepath as string) as string

dim auxvar() as string



auxvar() = split(filenamepath, "/", , vbtextcompare)

getfilename = auxvar(ubound(auxvar))

end function



' --------------------------------------

' 獲得文件的擴展名

'

' --------------------------------------

'

public function getext(filename as string) as string

dim auxvar() as string



on error resume next

auxvar() = split(filename, "/", , vbtextcompare)

auxvar() = split(auxvar(ubound(auxvar)), ".", , vbtextcompare)

getext = auxvar(ubound(auxvar))

end function



' --------------------------------------

' 測試文件是否存在(不能測試隱含文件和系統文件)

'

' --------------------------------------

'

public function fileexists(filename as string) as boolean

on error resume next

fileexists = (dir$(filename) <> "")

end function



' --------------------------------------

' 查找文件

'

' --------------------------------------

'

function getfiles(filespec as string, optional attributes as vbfileattribute) as string()

dim result() as string

dim filename as string, count as long, path2 as string

const alloc_chunk = 50



redim result(0 to alloc_chunk) as string

filename = dir$(filespec, attributes)

do while len(filename)

count = count + 1

if count > ubound(result) then

redim preserve result(0 to count + alloc_chunk) as string

end if

result(count) = filename

filename = dir$

loop



redim preserve result(0 to count) as string

getfiles = result



end function



' --------------------------------------

' 轉換字符串

'

' --------------------------------------

'

public function stringfrombuffer(buffer as string) as string

dim npos as long



npos = instr(buffer, vbnullchar)

if npos > 0 then

stringfrombuffer = left$(buffer, npos - 1)

else

stringfrombuffer = buffer

end if

end function



' --------------------------------------

' 寫內容到文本文件中

'

' --------------------------------------

'

sub writetextfilecontents(text as string, filename as string, optional appendmode as boolean)

dim fnum as integer, isopen as boolean



on error goto error_handler

fnum = freefile()

if appendmode then

open filename for append as #fnum

else

open filename for output as #fnum

end if

isopen = true

print #fnum, text

error_handler:

if isopen then close #fnum

if err then err.raise err.number, , err.description

end sub



' --------------------------------------

' 讀信息到ini文件中

'

' --------------------------------------

'

public function readinifile(byval strinifile as string, byval strsection as string, byval strkey as string) as string

dim strbuffer as string * 255



if getprivateprofilestring(strsection, strkey, vbnullstring, strbuffer, 255, strinifile) then

readinifile = stringfrombuffer(strbuffer)

end if

end function



' --------------------------------------

' 添加信息到listview控件中

'

' --------------------------------------

'

sub lstvinfo_add(lstvcontrol as listview, infonum as integer, selectedflag as boolean, paramarray infostr())

dim i as integer



with lstvcontrol

.listitems.add , , trim(infostr(0))

if selectedflag then

.listitems(.listitems.count).selected = true

else

.listitems(.listitems.count).selected = false

end if



for i = 2 to infonum

.listitems(.listitems.count).listsubitems.add , , trim(infostr(i - 1))

next

.listitems(.listitems.count).ensurevisible

end with

end sub

自此,代碼copy完成,這時你再打開工程,編譯運行。

1. 信息打包:在frmmain窗體中點擊“打包”,直至打開frmaddinfo窗體,在其中點擊“添加信息”進行信息添加項,同時,你也可以修改目標信息的路徑及文件(說明修改完成后,別忘了點擊“修改信息”信息按鈕噢),你也可以給你的壓縮包修改一個名字。最后點擊“信息打包”按鈕,進行打包;

2. 信息包展開:打包完成,你可以通過frmmain窗體中的展開程序進行壓縮包展開,該展開形式對于存在的文件將覆蓋,你可以修給代碼,使之符合你自己的要求;

3. 你可以將你的壓縮和該程序一同發給你的客戶,這樣,客戶通過展開按鈕便可以給你的程序進行信息更新了;

4. 你也可以將這些代碼變通形式內嵌在你的程序中,通過文件關聯,直接打開你的包文件,這樣會更有趣;

5. 若你是dephi或c++程序員,我相信你看了代碼后,用你的方式做起來會更簡單。



j 若仍不明白,或需求源代碼,請來信告訴我,請來信告訴我,我會盡量滿足你的要求!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 五河县| 达孜县| 广西| 屯留县| 娱乐| 东安县| 沙雅县| 英山县| 瓮安县| 合川市| 武穴市| 永和县| 宜黄县| 通河县| 巫山县| 昌平区| 黔南| 凤阳县| 绥滨县| 新昌县| 瑞安市| 万载县| 乐山市| 建湖县| 昌平区| 上栗县| 工布江达县| 革吉县| 新源县| 桃园县| 田阳县| 灵石县| 高清| 汝阳县| 博罗县| 巫山县| 陈巴尔虎旗| 东光县| 甘肃省| 梓潼县| 精河县|