关于保存关闭文件的问题,急。。。

temcozw 2003-09-12 04:26:13
环境是VB6.0
我用ShellExecute API打开指定的文件
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

我找不到保存和关闭文件的API
VB6.0的CommandDialog控件会出现对话框,我想编辑打开的文件后,点一个按钮直接保存关闭就可以
...全文
60 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
temcozw 2003-09-12
  • 打赏
  • 举报
回复
楼上的 我可能主题写错拉
我的意思是用相应的应用程序打开相应的文件
比如用word打开word文件

ch21st(风尘鸟):
怎么PostMessage API不管用
kmzs 2003-09-12
  • 打赏
  • 举报
回复
看看书把对顺序文件、随机文件和二进制文件又不同的方法。
temcozw 2003-09-12
  • 打赏
  • 举报
回复
sAppName = Mid(sFilename, InStrRev(sFilename, "\") + 1) & " - 记事本"

如果是打开任何程序,那这个" - 记事本"该怎么指定

谢谢

道素 2003-09-12
  • 打赏
  • 举报
回复
下面演示用VB打开,关闭一个文件或应用程序
Option Explicit
Private sAppName As String, sAppPath As String
Private sFilename As String
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
Const SW_SHOWNORMAL = 1

Private Sub cmdCheck_Click()

'check if application is running
If IsTaskRunning(sAppName) Then
MsgBox "Application '" & sAppName & "' is running!"
Else
MsgBox "Application '" & sAppName & "' is not running!"
End If
End Sub

Private Sub cmdClose_Click()
'close application

Call EndTask(sAppName)
End Sub

Private Sub cmdStart_Click()
ShellExecute Me.hwnd, vbNullString, "c:\label.txt", vbNullString, "C:\", SW_SHOWNORMAL

End Sub

Private Sub Form_Load()
sFilename = "c:\label.txt"
sAppName = Mid(sFilename, InStrRev(sFilename, "\") + 1) & " - 记事本"
End Sub
模块代码
Option Explicit

'API's Function Declarations
Private Declare Function IsWindow Lib "user32" (ByVal hwnd As Long) As Long

Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" ( _
ByVal hwnd As Long, _
ByVal nIndex As Long) As Long

Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" ( _
ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long

Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _
ByVal lpClassName As Any, _
ByVal lpWindowName As String) As Long

'API Constants
Public Const GWL_STYLE = -16
Public Const WS_DISABLED = &H8000000
Public Const WM_CANCELMODE = &H1F
Public Const WM_CLOSE = &H10

Public Function IsTaskRunning(sWindowName As String) As Boolean
Dim hwnd As Long, hWndOffline As Long

On Error GoTo IsTaskRunning_Eh
'get handle of the application
'if handle is 0 the application is currently not running
hwnd = FindWindow(0&, sWindowName)
If hwnd = 0 Then
IsTaskRunning = False
Exit Function
Else
IsTaskRunning = True
End If

IsTaskRunning_Exit:
Exit Function

IsTaskRunning_Eh:
Call ShowError(sWindowName, "IsTaskRunning")
End Function

Public Function EndTask(sWindowName As String) As Integer
Dim X As Long, ReturnVal As Long, TargetHwnd As Long

'find handle of the application
TargetHwnd = FindWindow(0&, sWindowName)
If TargetHwnd = 0 Then Exit Function

If IsWindow(TargetHwnd) = False Then
GoTo EndTaskFail
Else
'close application
If Not (GetWindowLong(TargetHwnd, GWL_STYLE) And WS_DISABLED) Then
X = PostMessage(TargetHwnd, WM_CLOSE, 0, 0&)
DoEvents
End If
End If

GoTo EndTaskSucceed

EndTaskFail:
ReturnVal = False
MsgBox "EndTask: cannot terminate " & sWindowName & " task"
GoTo EndTaskEndSub

EndTaskSucceed:
ReturnVal = True

EndTaskEndSub:
EndTask% = ReturnVal
End Function

Public Function ShowError(sText As String, sProcName As String)
'this function displays an error that occured

Dim sMsg As String
sMsg = "Error # " & Str(Err.Number) & " was generated by " _
& Err.Source & vbCrLf & Err.Description
MsgBox sMsg, vbCritical, sText & Space(1) & sProcName
Exit Function

End Function
道素 2003-09-12
  • 打赏
  • 举报
回复
ShellExecute 打开文件是用和他建立关联的软件打开,而不是你的程序,你调用那个软件的保存关闭就可以了,如果想在vb操作就给它发消息吧

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧