全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2579
推到 Plurk!
推到 Facebook!

ShellExecute 的參數太長, 怎麼辦 ?

答題得分者是:hagar
boson
中階會員


發表:74
回覆:155
積分:85
註冊:2004-07-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-06-11 14:20:12 IP:218.162.xxx.xxx 訂閱
我要透過 Outlook Express 寄信, 以下的方法基本上可以啟動 Outlook express, 同時自動填入主題與內容等:

Str1:='mailto:abc@aaa.com.tw?subject=主題&body=內文';
ShellExecute(0,nil,PAnsiChar(Str1),nil,nil,sw_showdefault);

但問題是, 當內文很長, 使 Str1 長度超過 2K 左右時, 命令就無法執行, Outlook Express 不會出現,
這下該怎麼辦 ?

syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-06-11 17:41:39 IP:61.64.xxx.xxx 訂閱
改用 parameter 參數
或用 ShellExecuteEx


===================引 用 boson 文 章===================
我要透過 Outlook Express 寄信, 以下的方法基本上可以啟動 Outlook express, 同時自動填入主題與內容等:

Str1:='mailto:abc@aaa.com.tw?subject=主題&body=內文';
ShellExecute(0,nil,PAnsiChar(Str1),nil,nil,sw_showdefault);

但問題是, 當內文很長, 使Str1 長度超過 2K 左右時, 命令就無法執行, Outlook Express 不會出現,
這下該怎麼辦 ?
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-06-11 17:43:40 IP:210.242.xxx.xxx 未訂閱
使用 MAPI, 參考底下這篇看看:
<textarea class="delphi" rows="10" cols="60" name="code"> uses MAPI; function SendMailMAPI(const Subject, Body, FileName, SenderName, SenderEMail, RecepientName, RecepientEMail: String): Integer; var message: TMapiMessage; lpSender, lpRecepient: TMapiRecipDesc; FileAttach: TMapiFileDesc; SM: TFNMapiSendMail; MAPIModule: HModule; begin FillChar(message, SizeOf(message), 0); with message do begin if (Subject <> '') then lpszSubject := PChar(Subject); if (Body <> '') then lpszNoteText := PChar(Body); if (SenderEMail<>'') then begin lpSender.ulRecipClass := MAPI_ORIG; if (SenderName='') then lpSender.lpszName := PChar(SenderEMail) else lpSender.lpszName := PChar(SenderName); lpSender.lpszAddress := PChar('SMTP:' SenderEMail); lpSender.ulReserved := 0; lpSender.ulEIDSize := 0; lpSender.lpEntryID := nil; lpOriginator := @lpSender; end; if (RecepientEMail <> '') then begin lpRecepient.ulRecipClass := MAPI_TO; if (RecepientName='') then lpRecepient.lpszName := PChar(RecepientEMail) else lpRecepient.lpszName := PChar(RecepientName); lpRecepient.lpszAddress := PChar('SMTP:' RecepientEMail); lpRecepient.ulReserved := 0; lpRecepient.ulEIDSize := 0; lpRecepient.lpEntryID := nil; nRecipCount := 1; lpRecips := @lpRecepient; end else lpRecips := nil; if (FileName = '') then begin nFileCount := 0; lpFiles := nil; end else begin FillChar(FileAttach, SizeOf(FileAttach), 0); FileAttach.nPosition := Cardinal($FFFFFFFF); FileAttach.lpszPathName := PChar(FileName); nFileCount := 1; lpFiles := @FileAttach; end; end; MAPIModule := LoadLibrary(PChar(MAPIDLL)); if MAPIModule = 0 then Result := -1 else try @SM := GetProcAddress(MAPIModule, 'MAPISendMail'); if @SM <> nil then Result := SM(0, Application.Handle, message, MAPI_DIALOG or MAPI_LOGON_UI, 0) else Result := 1; finally FreeLibrary(MAPIModule); end; if Result <> 0 then MessageDlg('Error sending mail (' IntToStr(Result) ').', mtError, [mbOk], 0) end; </textarea>
系統時間:2024-05-02 16:59:17
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!