當前位置:首頁 » 圖片軟體 » vb圖片查看軟體
擴展閱讀
女人的子的圖片 2025-06-10 15:11:14
輪船素描圖片大全 2025-06-10 15:10:19

vb圖片查看軟體

發布時間: 2022-05-15 13:30:48

A. VB中如何調用XP的圖片查看器

使用 shell :

★ShellExecute函數和Shell函數:打開外部程序

ShellExecute函數
'聲明
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hWnd As Long, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

'命令語句
Private Sub Command1_Click()
Dim lR As Long
lR = ShellExecute(Me.hWnd, "Open", sFile, "", "", vbNormalFocus)
End Sub

本函數還可以用來連接到網頁:
ShellExecute 0&, vbNullString, "http://coolbasic.yeah.net", vbNullString, vbNullString, vbNormalFocus
或者這樣寫來發送Email:
ShellExecute me.hwnd, "open", "mailto:[email protected]", vbNullString, vbNullString, SW_SHOW

另外有ShellExecute的替代用法,更加簡單實用,不用API,一句Shell搞定!
連接到網頁:
Shell "rundll32.exe url.dll,FileProtocolHandler http://www.online.sh.cn"
打開文件:
Shell "rundll32.exe url.dll,FileProtocolHandler " & App.Path & "\SHELLTST.TXT"

Shell函數
運行一個可執行程序,並且如果該程序仍然在運行,則返回一個包含該程序的進程 ID 的整數。

Public Function Shell( _
ByVal Pathname As String, _
Optional ByVal Style As AppWinStyle = AppWinStyle.MinimizedFocus, _
Optional ByVal Wait As Boolean = False, _
Optional ByVal Timeout As Integer = -1 _
) As Integer

格式:Shell(Pathname, Style As AppWinStyle, Wait, Timeout)

參數:
△Pathname
必選項。字元串。要執行的程序名以及任何需要的參數和命令行開關。Pathname 還可以包括驅動器和目錄路徑或文件夾。
△Style
可選項。AppWinStyle。從 AppWinStyle 枚舉中選擇的值,該枚舉與要在其中運行程序的窗口樣式相對應。如果省略 Style,則 Shell 使用 AppWinStyle.MinimizedFocus,這將使程序以最小化啟動並具有焦點。
Style 參數可以有以下設置之一:
AppWinStyle.Hide 隱藏窗口並為隱藏的窗口提供焦點。
AppWinStyle.NormalFocus 為窗口提供焦點,並以最近的大小和位置顯示窗口。
AppWinStyle.MinimizedFocus 為窗口提供焦點,並以圖標的形式顯示窗口。
AppWinStyle.MaximizedFocus 為窗口提供焦點,並以全屏方式顯示窗口。
AppWinStyle.NormalNoFocus 將窗口設置為最近的大小和位置。當前活動窗口保持焦點。
AppWinStyle.MinimizedNoFocus 以圖標的形式顯示窗口。當前活動窗口保持焦點。

△Wait
可選項。Boolean。指示 Shell 函數是否應等待程序完成的值。如果省略 Wait,則 Shell 使用 False。
△Timeout
可選項。Integer。Wait 為 True 時等待完成的毫秒數。如果省略 Timeout,則 Shell 使用 -1,表示沒有超時,Shell 直到程序完成時才返回。因此,如果省略 Timeout 或將它設置為 -1,則 Shell 可能永遠不會將控制返回給程序。

異常/錯誤
異常類型 錯誤號 條件
ArgumentException 5 Style 不在 0 到 9(包含 0 和 9)范圍內。
FileNotFoundException 53 Shell 無法啟動指定的程序。

備注
Shell 函數的返回值取決於 Pathname 中指定的程序在 Shell 返回時是否仍在執行。如果將 Wait 設置為 True 並且程序在超時過期前結束,Shell 返回零。如果超時過期或者省略 Wait 或將它設置為 False,則 Shell 返回程序的進程 ID。進程 ID 是標識正在運行的程序的唯一數字。

如果 Shell 函數無法啟動指定的程序,則出現 System.IO.FileNotFoundException 錯誤。例如,當試圖從使用 System.Windows.Forms 的應用程序運行 16 位程序(如 command.com)時,可能會發生這種情況。解決辦法是運行將調用所需的 16 位程序的 32 位程序。如果是 command.com,則可以將運行 cmd.exe 作為另一種選擇。

默認情況下,Shell 函數非同步運行程序。這意味著用 Shell 函數啟動的程序在 Shell 函數後面的語句執行前可能沒有結束執行。如果想等待程序結束後再繼續,請將 Wait 設置為 True。

整個路徑和文件規范應該始終用引號引起來,如以下示例所示:

ID = Shell("""C:\Program Files\MyFile.exe"" -a -q", , True, 100000)
字元串內每對相鄰的雙引號 ("") 被解釋為字元串中的一個雙引號字元。因此,前面的示例表示 Shell 函數的下列字元串:

"C:\Program Files\MyFile.exe" -a -q
如果路徑沒有用引號引起來,Windows 就會在 C:\ 目錄中查找名為 Program.exe 的文件,而不是在 C:\Program Files 目錄中查找 MyFile.exe 文件。

安全說明 如果路徑和文件規范沒有用引號引起來,那麼當文件名或路徑節點包含空格時,就會出現安全風險。在上面的示例中,路徑節點 \Program Files 包含一個空格。如果規范不在引號中,並且名為 Program.exe 的程序(例如通過非法的破壞)安裝在 C:\ 中,Windows 就會執行 Program.exe 程序而不是 MyFile.exe。
安全說明 Shell 函數需要非託管代碼許可權,這可能會對它在部分信任情況下的執行產生影響。有關更多信息,請參見 SecurityPermission 類和代碼訪問許可權。
示例
本示例使用 Shell 函數運行一個用戶指定的應用程序。通過將 AppWinStyle.NormalFocus 指定為第二個參數,以正常大小打開應用程序並為它提供焦點。

Dim ProcID As Integer
' Run Calculator.
ProcID = Shell("C:\Windows\system32\calc.exe", AppWinStyle.NormalFocus)
' The preceding path is for Windows XP;
' The Windows 2000 path is C:\WINNT\system32\calc.exe.

另,shell函數無須聲明,例:
Option Explicit

Private Sub Command1_Click()
Shell ("D:\Program Files\WinRAR\winrar.exe")
End Sub

調用Shell函數可以執行外部可執行文件,其擴展名如.exe 、.com、.bat或.pif,預設擴展名為.exe。不能執行操作系統內部命令及所有非執行文件(如文檔),否則將顯示出錯信息

VB 中,常以Shell指令來執行外部程式,然而它在Create該外部process 後,立刻就會回到vb 的下一行程式,無法做到等待該Process結束時,才執行下一行指令,或是說,無法得知該Process是否已結束,甚者,該Process執行到一半,又該如何中止其執行等等,這些都不是Shell指令所能控制的,因此我們需使API的幫助來完成。

第一個問題,如何等待shell所Create的process結束後才往後執行vb的程式。

首先要知道的是,每個Process有唯一的一個ProcessID,這是OS給定的,用來區別每個 Process,這個Process ID(PID)主要可用來取得該Process相對應的一些資訊,然而要對該Process的控制,卻大多透過 Process Handle(hProcess)。VB Shell指令的傳回值是PID,而非hProcess,所以我們需透過OpenProcess這個API來取得 hProcess而OpenProcess()的第一個參數,指的是所取得的hProcess所具有的

能力,像 PROCESS_QUERY_INFORMATION 便是讓GetExitCode()可取得hProcess所指的process之狀態,而PROCESS_TERMINATE,便是讓TerminateProcess(hProcess..)的指令能夠生效,也就是說,不同參數設定,使hProcess所具有的許可權、能力有所不同。取得 hProcess後便可以使用WaitForSingleObject()來等待hProcess狀態的改變,也就是說,它會等待 hProcess所指的process執行完,這個指令才結束,它

第二個參數所指的是 WaitForSingleObject()所要等待的時間(in milliseconds ),如果超過所指的時間,就TimeOut而結束WaitForSingleObject()的等待。若要它無限的等下去,就設定為INFINITE。

pid = Shell("C:\tools\spe3\pe2.exe", vbNormalFocus)
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 0, pid)
ExitEvent = WaitForSingleObject(hProcess, INFINITE)
Call CloseHandle(hProcess)

上例會無限等待shell指令create之process結束後,才再做後面的vb指令。有時覺得那會等太久,所以有第二個解決方式:等process結束時再通知vb 就好,即:設定一個公用變數(isDone),當它變成True時代表Shell所Create的Process已結束。當Process還在執行時,GetExitCodeProcess會傳&H103給其第二個參數,直到結束時才傳另外的數值,如果程式正常結束,那Exitcode = 0,否則就得看它如何

結束了。或許有人在其他地方看到 loop的地方是Loop while Exitcode <> 0,那有一點危險,如果以這個例子來看,您不是用F4來離開pe2而是用右上方 X 的結束dos window那麽,會因為ExitCode的值永遠不會是0,而進入無窮的迴圈。

Dim pid As Long
pid = Shell("C:\tools\spe3\pe2.exe", vbNormalFocus)
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 0, pid)
isDone = False
Do
Call GetExitCodeProcess(hProcess, ExitCode)
Debug.Print ExitCode
DoEvents
Loop While ExitCode = STILL_ALIVE
Call CloseHandle(hProcess)
isDone = True
另外,如果您的shell所Create的程式,有視窗且為立刻Focus者,可另外用以下的方式
Dim pid As Long
Dim hwnd5 As Long
pid = Shell("c:\tools\spe3\pe2.exe", vbNormalFocus)
hwnd5 = GetForegroundWindow()
isDone = False
Do While IsWindow(hwnd5)
DoEvents
Loop
isDone = True
而如何強迫shell所Create的process結束呢,那便是
Dim aa As Long
If hProcess <> 0 Then
aa = TerminateProcess(hProcess, 3838)
End If
hProcess便是先前的例子中所取得的那個Process Handle, 3838所指的是傳給GetExitCodeProcess()中的第二參數,這是我們任意給的,但最好不要是0,因為0一般是代表正常結束,當然這樣設也不會有錯。當然不可設&H103,以這個例子來看,如果程式正處於以下的LOOPDo

Call GetExitCodeProcess(hProcess, ExitCode)
Debug.Print ExitCode
DoEvents
Loop While ExitCode = STILL_ALIVE
Debug.print ExitCode

而執行了 TerminateProcess(hProcess, 3838)那會看到ExitCode = 3838。然而,這個方式在win95沒問題,在NT中,可能您要在OpenProcess()的第一個參數要更改成 PROCESS_QUERY_INFORMATION Or PROCESS_TERMINATE 這樣才能Work。不過良心的建議,非到最後關頭,不要使用TerminateProcess(),因不正常的結束,往往許多程式結束前所要做的事都沒有做,可能造成Resource的浪費,甚者,下次再執行某些程式時會有問題,例如:本人常使用MS-dos Shell Link 的方式執行一程式,透過Com port與大電腦的聯結,如果Ms-dos Shell Link 不正常結束,下次再想Link時,會發現too Many Opens,這便是一例。

另外,有人使用Shell來執行.bat檔,即:
pid = Shell("c:\aa.bat", vbNormalFocus)

可是卻遇上aa.bat結束了,但ms-dos的Window卻仍活著,那可以用以下的方式來做

pid = Shell("c:\command.com /c c:\aa.bat", vbNormalFocus)

那是執行Command.com,而Command.com指定執行c:\aa.bat 而且結束時自動Close

B. VB做個圖片的查看器 就是點圖片能切換到下一張如此循環

'新建一個exe工程
'依次打開菜單:工程,部件;在控制項列表中選中「Microsoft Common Dialog 6.0(SP6)」按確定退出
'窗體form1上畫3個command按鈕,1個FileListBox文件列表控制項,1個PicrureBox圖像框控制項,1個CommonDialog文件瀏覽控制項
'將以下代碼復制到Form1的代碼區

Private FileIdx As Long '文件索引號
Private APath As String '圖片文件夾

Private Sub Form_Load() '初始化控制項
Command1.Top = 0
Command2.Top = 0
Command3.Top = 0
Command1.Left = 0
Command2.Left = Command1.Width + Command1.Width / 8
Command3.Left = Command2.Left + Command2.Width + Command1.Width / 8
Command1.Caption = "打開"
Command2.Caption = "上一張"
Command3.Caption = "下一張"
Picture1.Left = 0
Picture1.Top = Command1.Height + Command1.Height / 4
Picture1.AutoRedraw = True
Picture1.AutoSize = True
File1.Pattern = "*.bmp;*.jpg" '文件類型
File1.Refresh
File1.Visible = False
End Sub

Private Sub Picture1_Resize() '根據圖片尺寸改變窗體大小
Me.Width = Picture1.Width
Me.Height = Picture1.Height + Picture1.Top + Command1.Height + Command1.Height / 4
If Me.Width < Command3.Left + Command3.Width Then Me.Width = Command3.Left + Command3.Width

End Sub

Private Sub Command1_Click() '打開文件夾
Dim Tmp() As Byte, FirtFile As String
CommonDialog1.ShowOpen
APath = CommonDialog1.FileName
If APath = "" Then Exit Sub
Tmp = StrConv(APath, vbFromUnicode)
FirtFile = ""
Do While Tmp(UBound(Tmp)) <> Asc("\") '提取根目錄
FirtFile = String(1, Tmp(UBound(Tmp))) & FirtFile
ReDim Preserve Tmp(UBound(Tmp) - 1)
Loop
APath = StrConv(Tmp, vbUnicode)
File1.Path = APath
File1.Refresh
If File1.ListCount = 0 Then Exit Sub
For FileIdx = 0 To File1.ListCount - 1 '打開選中的圖片
If File1.List(FileIdx) = FirtFile Then
Picture1.Picture = LoadPicture(APath & File1.List(FileIdx))
Exit Sub
End If
Next
FileIdx = 0
Picture1.Picture = LoadPicture(APath & File1.List(0))
End Sub

Private Sub Command2_Click() '上一個
File1.Refresh '刷新文件
If File1.ListCount = 0 Then Exit Sub '如果文件夾內沒有圖片就退出過程
If FileIdx - 1 >= 0 Then
FileIdx = FileIdx - 1 '上一個就-1
Picture1.Picture = LoadPicture(APath & File1.List(FileIdx))
Else
FileIdx = File1.ListCount - 1 '上到0後就跳回最後一個
Picture1.Picture = LoadPicture(APath & File1.List(FileIdx))
End If
End Sub

Private Sub Command3_Click() '下一個
File1.Refresh
If File1.ListCount = 0 Then Exit Sub
If FileIdx + 1 < File1.ListCount Then
FileIdx = FileIdx + 1 '下一個就+1
Picture1.Picture = LoadPicture(APath & File1.List(FileIdx))
Else
FileIdx = 0 '下到最後一個後就跳回0
Picture1.Picture = LoadPicture(APath & File1.List(FileIdx))
End If
End Sub

C. 用VB編寫: 《圖片瀏覽軟體》

我簡單給你個放大縮小的示例吧。
Private Sub mnuZoomIn_Click() 『縮小0.8倍
On Error Resume Next
x1 = Image1.Width * 0.8
y1 = Image1.Height * 0.8
Image1.Move (Picture1.Width - x1) / 2, (Picture1.Height - y1) / 2, x1, y1
End Sub

Private Sub mnuZoomOut_Click() 』放大1.2倍
On Error Resume Next
x1 = Image1.Width * 1.2
y1 = Image1.Height * 1.2
Image1.Move (Picture1.Width - x1) / 2, (Picture1.Height - y1) / 2, x1, y1
End Sub

滾動條的我忘了,原來的程序源碼都丟了,其實很簡單,只需要針對滾動條的數值,把圖像文件移動到合適位置就可以。多查查函數和控制項手冊就好,因為你需要的功能都很簡單。

D. vb如何製作圖片查看器

一個簡單的用於說明核心代碼的小程序:

DimiAsInteger

DimpathNameAsString

PrivateSubDir1_Change()

File1.Path=Dir1.Path

EndSub

PrivateSubDrive1_Change()

Dir1.Path=Drive1.Drive

EndSub

PrivateSubFile1_Click()'點選file1中的文件名,顯示圖片

pathName=IIf(Right(File1.Path,1)="",File1.Path&File1.FileName,File1.Path&""&File1.FileName)

Picture1.Picture=LoadPicture(pathName)

EndSub

張志晨

E. VB圖片查看器問題

小問題

1.利用 webbrowser控制項替代以上兩種控制項,在網頁中顯示
如果你不想縮小圖像,而是加滾動條的話 我強烈建議你用 webbrowser控制項
在工程部件里添加 microsoft internet controls 組件即可
然後 代碼中用 WebBrowser1.Navigate "D:\照片\1.JPG" '必須是絕對路徑,這樣滾動條自己生成
如果你想實現縮放,建議用image ,如果你想同時實現兩個功能 還是選webbrowser控制項 只是代碼復雜點
2.Picturebox 加滾動條
3.Image Stretch=true

F. 怎樣用VB做一個圖片瀏覽器

Public Class Form1
Dim i As Integer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
i = i - 1
If (i < 0) Then
i = 4
End If

'pic.Image = imgl.Images(i)
pic.Image = Image.FromFile(imgNames(i).FullName)
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

i = i + 1
If (i >= 4) Then
i = 0
End If

'pic.Image = imgl.Images(i)
pic.Image = Image.FromFile(imgNames(i).FullName)

End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
If Button3.Text Is "播放" Then
Timer1.Start()
Button3.Text = "暫停"

Else
Timer1.Stop()
Button3.Text = "播放"

End If

End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
i = i + 1
If (i >= 4) Then
i = 0
End If
'pic.Image = imgl.Images(i)
pic.Image = Image.FromFile(imgNames(i).FullName)

End Sub

Dim imgNames As IO.FileInfo()
Private Sub test2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim _Url As String
_Url = Application.StartupPath & "\Imager" '獲取程序文件信息所在的文件夾

Dim _ImgUrl As New System.IO.DirectoryInfo(_Url) '新建文件夾對象

imgNames = _ImgUrl.GetFiles("*.jpg") '從文件信息中獲取文件對象的類型

End Sub

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

FolderBrowserDialog1.ShowDialog()

Dim _Url As String
_Url = FolderBrowserDialog1.SelectedPath

Dim _ImgUrl As New System.IO.DirectoryInfo(_Url) '新建文件夾對象

imgNames = _ImgUrl.GetFiles("*.jpg") '從文件信息中獲取文件對象的類型

End Sub
Dim form As New Form2

Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles form2Click.Click
Form.Show() '*************顯示窗體
End Sub

Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
Me.Close()
End Sub

Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
form.Close()
End Sub

Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
Dim clockF As New clock
clockF.ShowDialog()
End Sub
End Class

顯示張數的用text顯示出來就可以了

其實我也是初學者這些代碼有些小BUG請包涵我會修改的

大家可以加個QQ交流交流

G. VB做windows圖片和傳真查看器

Picture1.Picture = LoadPicture(文件地址)
Image1.Picture = LoadPicture(文件地址)

Image1支持透明
Picture1透明地方為背景色

H. VB做個查看圖片的小程序,請高手幫忙

用文件列表框的Filename的屬性。不過要看看資料,它返回的是文件名字。在配合PATH的屬性,把路徑和名字一起加上就行。PATH的屬性,你要看看。因為根目錄里的文件和文件夾里的文件調出不一樣。PATH的最後一個文件夾路徑不會自動添加"\",自己要加上(提示:用right的函數,例如if right(dir1.path,"\") then ....),自己編吧。

I. 利用vb設計圖片查看器的程序步驟

1、添加picturebox控制項到窗體
2、添加commandbutton控制項
3、添加Microsoft Common Dialog Control控制項(文件對話框)
4、在按鈕的click中,添加打開對話框代碼,使用loadpicture函數,打開文件,並賦值給picturebox的picture屬性

J. vb製作:簡單圖片瀏覽器

工程我已發給你
Dim tempx, tempy
Private Sub File1_Click()
a = File1.Path & "\" & File1.FileName
Dim FSO As New FileSystemObject
Picture1.Picture = LoadPicture(a)
tempx = Picture1.Width
tempy = Picture1.Height
Image1.Picture = LoadPicture(a)
StatusBar1.Panels.Item(1).Text = "文件大小(kb):" & FileLen(a) / 1024 & Space(1) & "修改日期:" & FSO.GetFile(a).DateLastModified & Space(1) & "大小:" & Image1.Width / 15 & "x" & Image1.Height / 15
End Sub

Private Sub HScroll1_Change()
Picture1.Picture = LoadPicture("")
Call daxiao(HScroll1.Value, HScroll1.Value)
Picture1.Width = HScroll1.Value + tempx
Picture1.Height = HScroll1.Value + tempy
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
File1.Path = Text1
File1.Pattern = "*.jpg;*.bmp"
End If
End Sub
Private Sub daxiao(x As Double, y As Double)
With LoadPicture(File1.Path & "\" & File1.FileName)
.Render Picture1.hDC, 0, 0, y, x, 0, .Height, .Width, -.Height, 0
End With
End Sub