如何调用window自带的文件属性对话框
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何调用window自带的文件属性对话框相关的知识,希望对你有一定的参考价值。
需要用到Interop1、引用命名空间
using System.Runtime.InteropServices;
2、定义一个Struct,用于传递参数
[StructLayout(LayoutKind.Sequential)]
public struct SHELLEXECUTEINFO
public int cbSize;
public uint fMask;
public IntPtr hwnd;
[MarshalAs(UnmanagedType.LPStr)]
public string lpVerb;
[MarshalAs(UnmanagedType.LPStr)]
public string lpFile;
[MarshalAs(UnmanagedType.LPStr)]
public string lpParameters;
[MarshalAs(UnmanagedType.LPStr)]
public string lpDirectory;
public int nShow;
public IntPtr hInstApp;
public IntPtr lpIDList;
[MarshalAs(UnmanagedType.LPStr)]
public string lpClass;
public IntPtr hkeyClass;
public uint dwHotKey;
public IntPtr hIcon;
public IntPtr hProcess;
3、导入Windows API函数和一些常量
private const int SW_SHOW = 5;
private const uint SEE_MASK_INVOKEIDLIST = 12;
[DllImport("shell32.dll")]
static extern bool ShellExecuteEx(ref SHELLEXECUTEINFO lpExecInfo);
4、写调用查看文件属性的对话框
public static void ShowFileProperties(string Filename)
SHELLEXECUTEINFO info = new SHELLEXECUTEINFO();
info.cbSize = System.Runtime.InteropServices.Marshal.SizeOf(info);
info.lpVerb = "properties";
info.lpFile = Filename;
info.nShow = SW_SHOW;
info.fMask = SEE_MASK_INVOKEIDLIST;
ShellExecuteEx(ref info);
参考技术A 需要用到Interop 1、引用命名空间 using System.Runtime.InteropServices; 2、定义一个Struct,用于传递参数 [StructLayout(LayoutKind.Sequential)] public struct SHELLEXECUTEINFO public int cbSize; public uint fMask; public IntPtr hwnd; [MarshalAs(UnmanagedType.LPStr)] public string lpVerb; [MarshalAs(UnmanagedType.LPStr)] public string lpFile; [MarshalAs(UnmanagedType.LPStr)] public string lpParameters; [MarshalAs(UnmanagedType.LPStr)] public string lpDirectory; public int nShow; public IntPtr hInstApp; public IntPtr lpIDList; [MarshalAs(UnmanagedType.LPStr)] public string lpClass; public IntPtr hkeyClass; public uint dwHotKey; public IntPtr hIcon; public IntPtr hProcess; 3、导入Windows API函数和一些常量 private const int SW_SHOW = 5; private const uint SEE_MASK_INVOKEIDLIST = 12; [DllImport("shell32.dll")] static extern bool ShellExecuteEx(ref SHELLEXECUTEINFO lpExecInfo);
调用windows的复制文件对话框
function CopyFileDir(sDirName: String;
sToDirName: String): Boolean;
var
fo: TSHFILEOPSTRUCT;
begin
FillChar(fo, SizeOf(fo), 0);
with fo do
begin
Wnd := 0;
wFunc := FO_COPY;
pFrom := PChar(sDirName + #0);
pTo := PChar(sToDirName + #0);
fFlags := FOF_NOCONFIRMATION + FOF_NOCONFIRMMKDIR;
end;
Result := (SHFileOperation(fo) = 0);
end;
以上是关于如何调用window自带的文件属性对话框的主要内容,如果未能解决你的问题,请参考以下文章
C# 如何打开一个文件的属性窗口,还有如何打开WebBrowser控件加载的网页的属性。