使用API调用Winodws各种通用对话框(Common Diaglog)的方法

本文介绍了如何使用API调用Windows的各种通用对话框,包括文件属性、关于对话框、捕获打印机端口、颜色对话框、复制磁盘和格式化软盘等,并提供了详细的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用API调用Winodws各种通用对话框(Common Diaglog)的方法(一)

1.文件属性对话框
Type SHELLEXECUTEINFO
cbSize As Long
fMask As Long
hwnd As Long
lpVerb As String
lpFile As String
lpParameters As String
lpDirectory As String
nShow As Long
hInstApp As Long
lpIDList As Long '可选参数
lpClass As String '可选参数
hkeyClass As Long '可选参数
dwHotKey As Long '可选参数
hIcon As Long '可选参数
hProcess As Long '可选参数
End Type

Const SEE_MASK_INVOKEIDLIST = &HC
Const SEE_MASK_NOCLOSEPROCESS = &H40
Const SEE_MASK_FLAG_NO_UI = &H400

Declare Function ShellExecuteEX Lib "shell32.dll" Alias "ShellExecuteEx" _
(SEI As SHELLEXECUTEINFO) As Long
Public Function ShowProperties(filename As String, OwnerhWnd As Long) As Long
'打开指定文件的属性对话框,如果返回值<=32则出错
Dim SEI As SHELLEXECUTEINFO
Dim r As Long
With SEI
.cbSize = Len(SEI)
.fMask = SEE_MASK_NOCLOSEPROCESS Or SEE_MASK_INVOKEIDLIST Or SEE_MASK_FLAG_NO_UI
.hwnd = OwnerhWnd
.lpVerb = "properties"
.lpFile = filename
.lpParameters = vbNullChar
.lpDirectory = vbNullChar
.nShow = 0
.hInstApp = 0
.lpIDList = 0
End With
r = ShellExecuteEX(SEI)
ShowProperties = SEI.hInstApp
End Function

新建一个工程,添加一个按钮和名为Text1的文本框
把以下代码置入CommandbButton_Click 中
Dim r As Long
Dim fname As String
'从Text1 中获取文件名及路径
fname = (Text1)
r = ShowProperties(fname, Me.hwnd)
If r <= 32 Then MsgBox "Error"

2.使用Win95的关于对话框
Private Declare Function ShellAbout Lib "shell32.dll" _
Alias "ShellAboutA" (ByVal hwnd As Long, ByVal szApp As String, _
ByVal szOtherStuff As String, ByVal hIcon As Long) As Long
示例:
Dim x As Long
x = shellabout (Form1.hwnd, "Visual Basic 6.0", _
"Alp Studio MouseTracker Ver 1.0", Form1.icon)

2.调用"捕获打印机端口"对话框
Private Declare Function WNetConnectionDialog Lib "mpr.dll" _
(ByVal hwnd As

在Android开发中,`Dialog`是一个常用的用户界面组件,用于显示临时信息或提示用户进行某些操作。有时候,我们可能需要让`Dialog`在一定时间后自动关闭。以下是几种实现`Dialog`定时关闭的方法: ### 方法一:使用`Handler` `Handler`可以用来在指定的时间后执行一个任务。我们可以利用`Handler`的`postDelayed`方法来实现在一定时间后关闭`Dialog`。 ```java import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.os.Handler; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { private Handler handler = new Handler(); private AlertDialog dialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage("这是一个定时关闭的对话框"); builder.setCancelable(false); dialog = builder.create(); dialog.show(); handler.postDelayed(new Runnable() { @Override public void run() { if (dialog.isShowing()) { dialog.dismiss(); } } }, 5000); // 5秒后关闭对话框 } @Override protected void onDestroy() { super.onDestroy(); handler.removeCallbacksAndMessages(null); } } ``` ### 方法二:使用`Timer` `Timer`也可以用来在指定的时间后执行一个任务。我们可以利用`TimerTask`来实现在一定时间后关闭`Dialog`。 ```java import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import androidx.appcompat.app.AppCompatActivity; import java.util.Timer; import java.util.TimerTask; public class MainActivity extends AppCompatActivity { private Timer timer = new Timer(); private AlertDialog dialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage("这是一个定时关闭的对话框"); builder.setCancelable(false); dialog = builder.create(); dialog.show(); timer.schedule(new TimerTask() { @Override public void run() { runOnUiThread(new Runnable() { @Override public void run() { if (dialog.isShowing()) { dialog.dismiss(); } } }); } }, 5000); // 5秒后关闭对话框 } @Override protected void onDestroy() { super.onDestroy(); timer.cancel(); } } ``` ### 方法三:使用`CountDownTimer` `CountDownTimer`是一个方便的工具类,可以在指定的时间间隔内执行倒计时任务。我们可以利用它来实现在一定时间后关闭`Dialog`。 ```java import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatDelegate; public class MainActivity extends AppCompatActivity { private AlertDialog dialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage("这是一个定时关闭的对话框"); builder.setCancelable(false); dialog = builder.create(); dialog.show(); new CountDownTimer(5000, 1000) { @Override public void onTick(long millisUntilFinished) { // 可以在这里更新倒计时显示 } @Override public void onFinish() { if (dialog.isShowing()) { dialog.dismiss(); } } }.start(); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值