更新最新問題,在經過_T()之類的MARCO之後,轉型問題解決了,
但是還是有錯誤erro LNK2028,應該是甚麼連結錯誤吧
不過我發現,要是當初專案用 主控台程式建立 ,就不會有ERROR,
DEV C++ 也可以空專案直接跑,
所以......還是卡關了.
作者: lytn (sapphira) 看板: C_and_CPP
標題: [問題] VC2005 ShellExecute();
時間: Tue Jun 16 17:29:35 2009
我用 學校授權的 VS2005 ,應該是 .NET 架構吧
專案用 Windows From 開啟的
網路上找很多範例 例如 MSDN
http://msdn.microsoft.com/en-us/library/bb762153(VS.85).aspx
雖然是看不太懂,不過我照著寫,或是網路上範例碼直接COPY用
#include<windows.h>
#include<shellapi.h>
ShellExecute ( NULL, "open", "C:\\path\\to\\readme.txt", NULL, NULL,
SW_SHOWNORMAL );
編譯時都會
Error C2644:'ShellExecuteW':無法將參數2 從 'const char[5]' 轉換成 'LPCWSTR'
這要怎麼搞阿?
----原程式碼
#include "stdafx.h"
#include <windows.h>
#include <shellapi.h>
#include<vector>
#include "Form1.h"
#include "GloVar.h"
#include "CivilClass.h"
#include "BasicExcel.hpp"
using namespace YExcel;
using namespace VC_Project;
[STAThreadAttribute]
int main(array<System::String ^> ^args)
{
// HWND hwnd;
// LPCWSTR filpat="open";
WinExec("Notepad.exe", SW_SHOW); //這個會跑
ShellExecute ( NULL, "open", "C:\\path\\to\\readme.txt", NULL, NULL,
SW_SHOWNORMAL ); //這會錯
Application::EnableVisualStyles();
Application::SetCompatibleTextRenderingDefault(false);
// 建立主視窗並執行
Application::Run(gcnew Form1());
return 0;
}
另外想順便問, WinExec 跟 ShellExecute 有什麼差別?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.130.186
推 zlw:改成_T("C:\\path\\to\\readme.txt"),MSDN generic-text 06/16 17:31
推 legnaleurc:#include <tchar.h> 06/16 17:36
→ legnaleurc:所有 string literal 都要用 _T() macro 包起來 06/16 17:36
→ lytn:把 OPEN 跟 PATH 包起來以後 -> 兩個無法解析的外部符號 06/16 17:40
※ 編輯: lytn 來自: 140.113.130.186 (06/16 17:50)
推 zlw:修正一下,你該用TEXT()才對,_T跟_TEXT還有_UNICODE都定義在 06/16 19:45
→ zlw:tchar.h是微軟當初沒有給CRT有generic後來才加的。而Win API 06/16 19:46
→ zlw:本來就generic所以用UNICODE跟TEXT(),只需要windows.h即可 06/16 19:46
推 jerohands:強制轉ASCII code→ShellExecuteA,或ShellExecuteW 06/16 20:32
→ jerohands:使用 UNICODE。一般用UNICODE可以支援各種語言 06/16 20:35
推 ckck18:可以試看看 ShellExecuteA 應該不會有這個問題 06/16 21:03
※ 編輯: lytn 來自: 140.113.130.186 (06/17 03:17)
推 zlw:沒用過Windows Form只知道跟CLR有關。既然你這程式不是MFC,那 06/17 08:52
→ zlw:在VC開專案時,選Win32 主控台專案也是合理吧 06/17 08:52
→ zlw:開專案時選範本,應該是幫你設定好專案設定,也就是說,假設你 06/17 08:54
→ zlw:開了主控台,也許專案設定手動改妥當,就算要編出MFC應該也能 06/17 08:55
感謝zlw 大指點很多,
後來我決定先改用 winexec(); 反正一時沒要求很多
這問題還是先懸在版上好徵求解答好了.
是說我就是想要視窗阿,前幾年摸mfc 書上那 doc-view 架構看到頭都好幾顆大.
後來有windows From 我超開心的.
只是現在是要接舊的程式,不想把舊的程式整併進來,
想直接去偷 console 程式跑出來的 output.txt.
※ 編輯: lytn 來自: 140.113.197.95 (06/17 09:48)