Konvertierung von const char[x] in WCHAR
-
Hi, ich habe mir eine DLL geschrieben, welche die Funktion GetActiveWindowTitle() beinhaltet.
Der Code://Export hier: extern "C" __declspec (dllexport)
EXPORT WCHAR CALLBACK GetActiveWindowText() { WCHAR TitleString; TitleString = GetWindowText(GetActiveWindow(), &TitleString, 255); return TitleString; }Diese Funktion akzeptiert er auch, weil hier ja kein Array erzeugt wird. Das Problem aber ist, wenn ich innerhlab der DLL eine Zeichenkette wiedergeben will. Beispiel:
EXPORT WCHAR CALLBACK GetActiveWindowText() { WCHAR TitleString; TitleString = L"Test"; return TitleString; }"Konvertierung von const WCHAR[4] in WCHAR nicht möglich."
Das größere Problem: Das Zielprogramm (welches in einer anderen Programiersprache geschrieben ist, unterstützt keine Zeiger (Delphi), weshalb ich keinen Zeiger als Parameter anfordern kann. Wie kann ich trotzdem den Fenstertext des aktiven Fensters zurückgeben?
mfg MW88
-
Das Zielprogramm (welches in einer anderen Programiersprache geschrieben ist, unterstützt keine Zeiger (Delphi)
-
Das ändert trotzdem nichts daran, dass das Programm die Zeiger nicht unterstützt (es hat eine eigene Programmiersprache, welche diese nicht unterstützt.
-
omg, delphi is das Letzte ...
und 'nen char ist nunmal ein Zeichen und keine zeichenkette. Du kannst also keine Zeichenkette in TitleString speichern. Mach 'nen Array draus ..
WCHAR TitleString[256];
-
Ja sry, ich hab das Programm geschrieben und ja du hast recht: Delphi ist das letzte!^^
Deswegen programmiere ich damit auch nicht^^Aber zu deiner Lösung: Ja du hast recht aber das war nur ein blöder Fehler von mir aber das Problem bleibt immer noch. Auch wenn ich das schreibe:
EXPORT WCHAR CALLBACK GetActiveWindowText() { return "Test"; }Kommt der gleiche Fehler.
-
ohne dir nahe treten zu wollen - du solltest erstmal die Basics lernen. Wenn deine Funktion den Rückgabewert WCHAR hat kann diese nur 1 Zeichen zurückgeben. Somit funktioniert natürlich auch return "Test" nicht.
Im Übrigen liefert GetWindowText nicht den Window Text zurück, sondern die Anzahl der zeichen die in den 3. Parameter geschrieben wurden, der ein gültiger Pointer auf ein WCHAR-Array sein muss. Du übergibts allerdings kein Array im 3. Parameter.
Also:
- lerne etwas über Pointer (Zeiger)
- lerne etwas über Strings (Zeichenketten)MfG
-
ohne dir nahe treten zu wollen - du bist ziemlich dumm
-
Das hättest du dir sparen können du Vollidiot. Hast also doch kein Reallife.
Ich habe schon mit strings gearbeitet aber es geht nicht, gib mir doch wenigstens mal nen Hinweis (nen gültigen Ansatz)?
Das hilft mir genau so wenig weiter.Zu Blackshadow: Ohne dir nahetreten zu wollen - Vielleicht solltest du mal denken oder nachlesen bevor du schreibst (sry, hab ich beim obrigen Post auch nicht.
The GetWindowText function copies the text of the specified window's title bar (if it has one) into a buffer. If the specified window is a control, the text of the control is copied. However, GetWindowText cannot retrieve the text of a control in another application.
Parameters
hWnd
[in] Handle to the window or control containing the text.
lpString
[out] Pointer to the buffer that will receive the text. If the string is as long or longer than the buffer, the string is truncated and terminated with a NULL character.
nMaxCount
[in] Specifies the maximum number of characters to copy to the buffer, including the NULL character. If the text exceeds this limit, it is truncated.Außerdem kann ich kein
EXPORT wstring verwenden.
Ich habe genug Ahnung von Zeigern nur habe ich fast nie wenn ihc auf diesem Forum schreibe meine Programmierumgebung offen, weshalb es zu diesen Fehlern kommt.
-
Weshalb die Funktion eh sinnlos ist oder?