In LPCWSTR speichern?
-
Mirsad schrieb:
CString theString( "C:\\Windows\\notepad.exe C:\\TestDatei.txt" ); theString.Trim("\""); LPTSTR lpsz = new TCHAR[theString.GetLength()+1]; _tcscpy(lpsz, theString); m_lProgrammName = (LPCTSTR)theString; // Anwendung zum ausführen festlegen hr = pITask->SetApplicationName(m_lProgrammName);
Das theString.Trim("\""); macht wenig Sinn, da in theString sicher keine " gespeichert sind. Sie müssen also irgendwo anders hinzugefügt werden. Wenn du dir nicht sicher bist, benutze mal den Debugger.
Das erste und letzte Zeichen wegschneiden geht übrigends ganz einfach.
Z.B. sotheString = theString.Mid(1); theString = theString.Left(theString.GetLength()-1);
Grüße Rapha
-
Über Unicode findest du in der MSDN einiges:
http://msdn.microsoft.com/library/deu/default.asp?url=/library/DEU/vccore/html/_core_international_enabling.asp
http://msdn.microsoft.com/library/deu/default.asp?url=/library/DEU/vccore/html/_core_unicode_topics.asp
-
Versuch doch mal einfach:
LPCWSTR foo; foo = (LPCWSTR)(LPCTSTR)theString;
Lässt sich bei mir ohne Probleme compilieren. Obs Probleme macht hinterher kann ich dir nicht sagen.
-
Hallo Rapha
danke für den link, bin gerade dabei mir mehr Infos zu holen über dieses Thema!
mfg
Mirsad
-
hab jetzt gefunden woran es lag, aber nicht warum!
hier nochmal als beispiel:
LPCWSTR m_lProgrammName; m_lProgrammName = L"C:\\Windows\\notepad.exe C:\\TestDatei.txt"; // Fehlerzeile // kein Fehler: m_lProgrammName = L"C:\\Windows\\notepad.exe"; // kein Fehler, aber notepad ohne parameter C:\\TestDatei.txt // Anwendung zum ausführen festlegen hr = pITask->SetApplicationName(m_lProgrammName);
Warum speichert er die erste Zeile falsch aber die untere richtig???
mfg
mirsad
-
Vielleicht weil ein Leerzeichen drin ist?
-
ok, hab mein fehler gefunden, die ITask Klasse hat auch eine Funktion SetParameter, also SetApplicatonName und SetParameter müssen getrennt gesetzt werden, ich wollte natürlich alles ins eine stecken:
Falsch:
LPCWSTR = m_lProgrammName; m_lProgrammName = L"C:\\Windows\\notepad.exe C:\\TestDatei.txt"; hr = pITask->SetApplicationName(m_lProgrammName);
Richtig:
LPCWSTR m_lProgrammName; LPCWSTR m_sDatei; m_lProgrammName = L"C:\\Windows\\notepad.exe"; m_sDatei = L"C:\\TestDatei.txt"; // Parameter muß dem Programm separat zugewisen werden // Anwendung zum ausführen festlegen hr = pITask->SetApplicationName(m_lProgrammName); pITask->SetParameters(m_sDatei); // Optional if(FAILED(hr)) { MessageBox("Fehler bei Speichern der auszuführenden Anwendung!","Fehler", MB_OK); CoUninitialize(); }
Der Consolenbefehl lautet neben bei gesagt so:
C:\notepad C:\TestDatei.txt
Da war vieleicht mein Fehler das ich gedacht habe das es das selbe ist im Programmieren und Console!
Stellt sich noch die Frage wie kann ich in aus dem Textfeld in die LPCWSTR speichern???aber das mit dem Textfeld, da brauche ich Hilfe!
mfg
mirsad
-
Mirsad schrieb:
Stellt sich noch die Frage wie kann ich in aus dem Textfeld in die LPCWSTR speichern???
aber das mit dem Textfeld, da brauche ich Hilfe!
mfg
mirsadProbier mal die Casts die ich weiter oben geschrieben habe.
-
the_alien schrieb:
Mirsad schrieb:
Stellt sich noch die Frage wie kann ich in aus dem Textfeld in die LPCWSTR speichern???
aber das mit dem Textfeld, da brauche ich Hilfe!
mfg
mirsadProbier mal die Casts die ich weiter oben geschrieben habe.
Nein. Bitte nicht.
-
Hallo Forum
the_alien schrieb:
Versuch doch mal einfach:
LPCWSTR foo; foo = (LPCWSTR)(LPCTSTR)theString;
Lässt sich bei mir ohne Probleme compilieren. Obs Probleme macht hinterher kann ich dir nicht sagen.
ich habs natürlich probiert,
, leider auch nicht mit erfolg, ich hab dann so gemacht:
BSTR bstr; // umweg über BSTR CString cstr="TaskName"; LPCWSTR m_pwszTaskName; bstr = cstr.AllocSysString(); m_pwszTaskName = (LPCWSTR) bstr; // Jetzt kann der Task name aus der EDIT Box ausgelesen werden und als LPCWSTR auch gespeichert werden hr = pITS->NewWorkItem(m_pwszTaskName,CLSID_CTask, IID_ITask, (IUnknown**) &pITask); pITS->Release();
Bessere Idee hatte ich nicht, aber es funktioniert auch so!
mfg
Mirsad