1var s:pchar getwindowsdirectory(p,255)getsystemdirectory(p,255)

解决方案 »

  1.   

    转贴
    为程序在启动菜单中创建快捷方式将D d e C l i e n t C o n v 组件的D d e S e r v i c e 属性设置为P r o g M a n 。
    添加两个B u t t o n 组件的O n C l i c k 事件的处理过程如下:
    procedure TForm1.Button1Click(Sender: TO b j e c t ) ;
    v a r
    Macro: string;
    Cmd: array[0..255] of Char;
    b e g i n
    if Edit1.Text='' then // 判断文件名是否为空
    b e g i n
    M e s s a g e B o x ( H a n d l e , '程序名称不可以为空。' , '错误' , M B _ O K + M B _ I C O N E R R O R ) ;
    E x i t ;
    e n d ;
    // 打开"启动"程序项
    Macro := Format('[CreateGroup(%s)]', ['启动']) + #13#10;
    StrPCopy (Cmd, Macro);
    D d e C l i e n t C o n v 1 . O p e n L i n k ;
    if DdeClientConv1.ExecuteMacro(Cmd, False)=False then
    b e g i n
    M e s s a g e B o x ( 0 , '打开启动程序项失败。' , '错误' , M B _ O K + M B _ I C O N E R R O R ) ;
    E x i t ;
    e n d ;
    Macro := Format('[AddItem("%s",%s)]', [Edit1.Te x t , E d i t 2 . Text]) + #13#10;
    StrPCopy (Cmd, Macro);
    D d e C l i e n t C o n v 1 . O p e n L i n k ;
    // 创建应用程序的快捷方式
    if DdeClientConv1.ExecuteMacro(Cmd, False)=False then
    b e g i n
    M e s s a g e B o x ( 0 , '创建程序项失败。' , '错误' , M B _ O K + M B _ I C O N E R R O R ) ;
    E x i t ;
    e n d ;
    e n d ;
      

  2.   

    楼上的写的乱了点吧。而且也没分配空间,会报错的。
    var
      SysPath,WinPath:PChar;
    begin
      GetMem(SysPath,255);
      GetMem(WinPath,255);
      GetSystemDirectory(SysPath,MAX_PATH);
      GetWindowsDirectory(WinPath,MAX_PATH);
      showmessage(SysPath+#13+#10+WinPath);
    end;
    我测试过,肯定能用。
      

  3.   

    var dir:pchar;
    ...
    getwindowsdirectory(dir,sizeof(dir));//得到WINDOWS的目录
    getsystemsdirectory(dir,sizeof(dir));//得到系统的目录