教你在DELPHI中如何调用系统对话框

2016-01-29 14:12 109 1 收藏

教你在DELPHI中如何调用系统对话框,教你在DELPHI中如何调用系统对话框

【 tulaoshi.com - Delphi 】

 
在写程序的时候,有时我们为了省力,或者为了别的目的,我们常常想借用系统的对话框,那么,如何才能调用系统对话框呢?一位朋友是VB中是这样调用“打开方式”对话框的:

  winexec(PChar('rundll32 shell32,OpenAs_RunDLL '+FilePath),SW_SHOWDEFAULT);

  这句代码是运行rundll32.exe,让它调用shell32.dll中的资源来实现的。方法可行,但是有许多像我一样的菜鸟并不明白如何调用shell32.dll中的宝贵资源,我们应该如何去做呢?

  下面说说我是如何调用的:

  一、调用系统“About”对话框:

  首先在uses中加入SHellApi,
  然后写下如下代码:

  procedure TForm1.Button1Click(Sender: TObject);
  var
  shellapp: variant;
  begin
  ShellAboutW(0,'Timer v1.03','kedy版权所有',1);
  end;
  其他步骤我不详述。运行后点击button就会弹出标准的WINDOWS关于对话框。对话框标题为"关于Timer v 1.03"。大家可 以看到,在程序中我使用了ShellAboutW这个函数。在MSDN2003中这个函数  是这样描述的:
  ShellAbout Function
  Displays a ShellAbout dialog box. 
  Syntax
  int ShellAbout( HWND hWnd,
  LPCTSTR szApp,
  LPCTSTR szOtherStuff,
  HICON hIcon
  );
  Parameters
  hWnd
  [in] Window handle to a parent window. This parameter can be NULL. 
  szApp
  [in] Pointer to a null-terminated string containing text that will be displayed in the 
  title bar of the ShellAbout dialog box and on the first line of the dialog box after the 
  text "Microsoft". If the text contains a separator (#) dividing it into two parts, the 
  function displays the first part in the title bar and the second part on the first line 
  after the text "Microsoft". 
  szOtherStuff
  [in] Pointer to a null-terminated string containing text that will be displayed in the 
  dialog box after the version and copyright information. 
  hIcon
  [in] Icon that the function displays in the dialog box. If this parameter is NULL, the 
  function displays the Microsoft® Windows® or Microsoft Windows NT® icon. 

  什么意思我想不用我来翻译了吧,这些东西自己去看最好。

  二、调用关机对话框

  我们只要把begin部分代码改为
  begin
  shellapp := CreateOleObject('Shell.Application');
  shellapp.ShutDownWindows;
  end;

  其他部分不变。运行点击button我们就可以看到标准的系统关机对话框了。
  其实这还是调用的WindowsAPI函数shutdownwindows.
  这个部分使用的是windows的shell application的method中的两个函数。method其他的函数还有:
  BrowseForFolder、CascadeWindows、ControlPanelItem、EjectPC、Explore、FileRun、FindComputer、  FindFiles、Help、 MinimizeAll、NameSpace、Open、RefreshMenu、SetTime、TileHorizontally、    TileVertically、TrayProperties、 UndoMinimizeALL。我也只是学会了使用其中的几个函数。详细情况    请大家查看MSDN中有关shell object的内容。

  我最想说的是,学windows下的程序一定要用MSDN。这个库里的资源让我实在惊叹不已,大家可以看一看,我想你也会这样认为的。

 

来源:https://www.tulaoshi.com/n/20160129/1492749.html

延伸阅读
在对话框程序中,我们经常是利用对话框上的子控件进行命令响应来处理一些事件。如果我们想要让对话框(子控件的父窗口)类来响应我们的按键消息,我们可以通过ClassWizard对WM_KEYDOWN消息进行响应,当程序运行后,我们按下键盘上的按键,但对话框不会有任何的反应。这是因为在对话框程序中,某些特定的消息,例如按键消息,它们被Windows内部...
标签: Delphi
  Delphi作为一种面向对象的可视化开发工具,以其开发程序的高速度和编译代码的高效率越来越受到广大编程人员的喜爱。尽管Delphi已经提供了非常强大的开发组件(VCL),但灵活使用API函数一定可以使你的程序增色不少。 状态键的检查 当今不少流行软件的编辑窗口(包括Delphi的代码编辑窗口)的底部都有一个状态条...
用户在图片框中选择图片时,希望预先对图片的轮廓及大小有初步了解,但是VB的通用对话框没有预览的功能,为此需要定制一个自定义对话框。我们可以通过image控件加入窗体中来实现其功能。 程序示例: 程序功能说明: 在窗体的file1中选择一个图片文件,点选“预览”复选框,image控件就显示相应的图片,label1就显示该图片的大小。 ...
在对话框中显示位图分为静态和动态两种方法。静态法就是用VC6.0的资源编辑器,首先在资源视图中引入一张所要显示的位图,然后在对话框中放置一个Picture控件,在其属性对话框的Type下拉框中选择Bitmap,在Image框中输入所引入位图的ID,编译后对话框中就会显示所引入的位图。这种方法有一个明显的缺点,就是位图必须先画好并且程序运行时此位图...
VisualBasic提供了过时的FileCopy语句.问题是使用该函数时并不显示文件复制对话框,也就是说,当拷贝一个大文件时,用户看不到Windows的标准 文件复制对话框,无法从进度条上判断当前复制的进度.那么,如何做到这一点呢?请看下面: PublicTypeSHFILEOPSTRUCT hWndAsLong wFuncAsLong pFromAsString pToAsString fFl...

经验教程

829

收藏

29
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部