Hallo Community,
da ich in Google nicht sehr viel gefunden habe, was mich weiter bringt habe ich
mich hier angemeldet um euch zwei Fragen zu stellen.
Die erste lautet wie der Titel beschreibt:
Wie kann ich einen std:string, den ich von einer Funktion zurückgeben lasse in
LPCWSTR umwandeln um diesen per SetDlgItemText in ein Edit Feld (DialogBox per
Ressource) anzeigen zu lassen? Zur Info: Ich verwende Visual Studio (VC++) und
Unicode.
|
C-/C++-Quelltext
|
1
2
3
4
5
|
string Name = Funktion(...);
//Konvertierung
SetDlgItemText( hWnd, IDC_NAME, Name);
|
Meine zweite Frage hat nicht all zu viel mit der Überschrift zu tun, allerdings
wollte ich keine zwei Themen öffnen.
Ich habe eine eigene Update Funktion in mein Programm eingebaut, sodass sich
diese "updatet" sofern eine neue Version verfügbar ist.
Allerdings funktioniert dies nicht ganz so wie ich das möchte...
Die Theorie ist einfach.
Es wird im Internet(Webspace) eine .txt Datei überprüft, in der nur die
Version(1) angegeben ist. Wenn die Version gleich der gespeicherten Version in
meinem Programm ist(1) startet dies automatisch. Ist der Wert höher, so wird
die neue Version runtergeladen, die sich im Gleichen Verzeichnis wie die .txt
befindet.
Programmiertechnisch habe ich dies so verwirklicht:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
HINTERNET hInternet, hOpenUrl;
if ((hInternet = InternetOpen(L"Register",
INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0)) != NULL) {
if ((hOpenUrl =
InternetOpenUrl(hInternet,
L"http://infemo.in.funpic.de/Multihack%20by%20Scarface/Update.txt",
NULL, 0, 0 ,0)) != NULL) {
char
*buffer = new char[10000];
DWORD bytesRead;
if
(InternetReadFile(hOpenUrl, buffer, 10000, &bytesRead) == TRUE) {
buffer[bytesRead] = 0;
//Testausgabe
//cout << buffer << endl;
//getchar();
if(buffer == "1")
{
MessageBoxW(0, L"Kein Update verfügbar!",
L"Info", MB_ICONINFORMATION);
}
else
{
MessageBoxW(0, L"Update verfügbar!",
L"Info", MB_ICONINFORMATION);
}
InternetCloseHandle(hOpenUrl);
}
}
InternetCloseHandle(hInternet);
}
|
Die Testausgabe gibt immer das richtige aus. Also wird die Datei richtig
gelesen. Allerdings kommt nur einmal am Anfang die richtige Meldung(Update/kein
Update). Wenn ich den Wert verändert habe wird der Richtige ausgegeben,
allerdings wird bei der If-Abfrage trotzdem die gleiche Meldung wie am Anfang
ausgegeben.
Habe die Vermutung, das das irgendwie im Cache o.ä. gespeichert wird oder
sowas, kann das sein?
Würde mich sehr über Hilfestellung freuen!
Mit freundlichen Grüßen
Infemo