当我们双击托盘上的时间时,会出来一个窗体,这个窗体上有日历与时钟。
现在的问题是,如何把这个日历与时钟搬到自已的窗体中来。注意,不是叫你做一个跟它一模一样的窗体,而是要把它们从原来的窗体搬过来或者复制过来。问题解决的给分1000。

解决方案 »

  1.   

    这位老兄太有钱了吧 :P试试var
      H: THandle;
    begin
      WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL timedate.cpl', SW_SHOWNORMAL);
      H := GetForegroundWindow;
      Windows.SetParent(H, Handle);
    end;程序退出的时候再发送一条消息把它关闭掉
    SendMessage(H, WM_Close, 0, 0);
      

  2.   

    SetParent(findWindow('时期/时间 属性',nil), Handle);
      

  3.   

    纠正一下
    ShellExecute('open','RunDLL32.exe','Shell32.dll,Control_RunDLL timedate.cpl',nil,nil,0);
    SetParent(nil,findWindow('时期/时间 属性'), Handle);
      

  4.   

    SetParent(findWindow(nil,'时期/时间 属性'), Handle);
      

  5.   

    真的不会
    转载一个吧
    ShellExecute('open','RunDLL32.exe','Shell32.dll,Control_RunDLL timedate.cpl',nil,nil,0);
    SetParent(nil,findWindow('时期/时间 属性'), Handle);
      

  6.   

    调试通过
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Wnd:HWND;
    begin
      Wnd :=FindWindow('#32770','日期/时间 属性');
      Wnd := GetWindow(Wnd,GW_CHILD);
      Windows.SetParent(Wnd, Handle);
    end;
      

  7.   

    Kao,原来这么简单,楼上几位做对了,不过,这样做还不够全面,大家帮人帮到底,一块解决了吧!标题不一定是'日期/时间 属性',如果是英文或繁体或其它语言,则我就找不到窗体了,有没有通用一点的。另外,我试过了,如果‘日期/时间 属性'窗口关了,在我窗体的也会跟着关掉,能不能让它不关掉呢?我说话算话,解决了会另外开9个100分的贴,让你们来接分。
      

  8.   

    我的方法很土,但还实用,试试吧,下面代码调试通过。
    function GetClockWindow:HWND;
    var
      DialogWnd, CalPageWnd, CalWnd, ClockWnd:HWND;
    begin
      Result := 0;
      // 查找对话框窗口
      DialogWnd := FindWindowEx(0,0,'#32770',nil);
      // 如果找得到
      while DialogWnd<>0 do
      begin
        // 查找日期与时间页窗口句柄
        CalPageWnd := FindWindowEx(DialogWnd,0,'#32770',nil);
        // 如果找得到
        while CalPageWnd<>0 do
        begin
          // 查找日历类窗口
          CalWnd := FindWindowEx(CalPageWnd,0,'CalWndMain',nil);
          // 查找时钟类窗口
          ClockWnd := FindWindowEx(CalPageWnd,0,'ClockWndMain',nil);
          // 如果两者都存在,则表示找到了
          if (CalWnd<>0)and(ClockWnd<>0) then
          begin
            // 返回日期与时间页窗口句柄
            Result := CalPageWnd;
            break;
          end;
          // 查找下一个窗口
          CalPageWnd := FindWindowEx(DialogWnd,CalPageWnd,'#32770',nil);
        end;
        // 查找下一个对话框窗口
        DialogWnd := FindWindowEx(0,DialogWnd,'#32770',nil);
      end;
    end;
    // 测试
    procedure TForm1.Button2Click(Sender: TObject);
    var
      CalPageWnd: HWND;
    begin
      CalPageWnd := GetClockWindow;
      if CalPageWnd<>0 then
        EnableWindow(CalPageWnd,false);
    end;
      

  9.   

    问题解决,非常感谢各位的支持
    以下人员请各自找到相应的贴取分
    12rain(中雨~沉默的羔羊) 
    delphi_xizhousheng(西周生) 
    whitetiger8(蜗牛[我要一步一步往上爬]) 
    wuqiu(午秋)