App installieren
How to install the app on iOS
Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature may not be available in some browsers.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
c++ allrounder gefragt(Dateiverwaltung / Umgebungsvariablen)
- Ersteller d0x
- Erstellt am
hi,
hab ein paar Probleme die ich nicht zu lösen weiss. Also geht um folgendes.
Ich hätte gerne ein paar infos aus der regedit ausgelesen. Würde die ausserdem gerne durchsuchen. z.b. nach der ICQ version oder sonst irgendwas. Hat einer ne idee wie ich in die registry reinkomm? Denke mal das suchverfahren kann ich dann noch selber schreiben(jenachdem wie das handling von der lösung dann ist).
Ich würde auch noch gerne die Festplatte durchsuchen. Und zwar nach einem dateinamen. Ich weiss wie ich dateien öffne und verarbeite, aber leide muss ich da immer den pfad angeben. Hätte gerne ein programm, das mir alle blah.txt auf der festplatte sucht und den pfad in einen string schreibt (oder in verschiedene strings). Ich hab leide keine ahnung wie ich die verzeichnisse durchsuchen kann.
Als letztes würde ich gerne den Anmeldename (bei xp) rausbekommen. Habe mir schon die umgebungsvariablen angeschaut aber da gibts keine die den benutzernamen enthalten. höchstens in %temp% da steht er im pfad, allerdings weiss ich auch nciht wie ich %temp% in einen c++ string speicher.
Danke schonmal an alle.
gruss d0x
hab ein paar Probleme die ich nicht zu lösen weiss. Also geht um folgendes.
Ich hätte gerne ein paar infos aus der regedit ausgelesen. Würde die ausserdem gerne durchsuchen. z.b. nach der ICQ version oder sonst irgendwas. Hat einer ne idee wie ich in die registry reinkomm? Denke mal das suchverfahren kann ich dann noch selber schreiben(jenachdem wie das handling von der lösung dann ist).
Ich würde auch noch gerne die Festplatte durchsuchen. Und zwar nach einem dateinamen. Ich weiss wie ich dateien öffne und verarbeite, aber leide muss ich da immer den pfad angeben. Hätte gerne ein programm, das mir alle blah.txt auf der festplatte sucht und den pfad in einen string schreibt (oder in verschiedene strings). Ich hab leide keine ahnung wie ich die verzeichnisse durchsuchen kann.
Als letztes würde ich gerne den Anmeldename (bei xp) rausbekommen. Habe mir schon die umgebungsvariablen angeschaut aber da gibts keine die den benutzernamen enthalten. höchstens in %temp% da steht er im pfad, allerdings weiss ich auch nciht wie ich %temp% in einen c++ string speicher.
Danke schonmal an alle.
gruss d0x
- Mitglied seit
- 16.11.2001
- Beiträge
- 21.665
- Renomée
- 1.247
- Standort
- München
- Aktuelle Projekte
- World Community Grid
- Lieblingsprojekt
- Folding@Home
- Meine Systeme
- AMD Ryzen 9 5950X
- BOINC-Statistiken
- Folding@Home-Statistiken
- Prozessor
- AMD Ryzen 9 5950X
- Mainboard
- ASUS TUF Gaming X570-Pro [WI-FI]
- Kühlung
- be quiet! Shadow Rock 3
- Speicher
- 4x 16GB DDR4-3200 Corsair Vengeance LPX
- Grafikprozessor
- ASRock Radeon RX 550 Phantom Gaming Aktiv 2GB
- Display
- LG 27UL850-W, 27"
- SSD
- Samsung 980 PRO 2TB, Samsung 840 EVO 500GB
- HDD
- Seagate Barracuda 7200.14 3TB SATA3
- Optisches Laufwerk
- Samsung SH-S183A SATA schwarz (im externen Gehäuse)
- Gehäuse
- be quiet! Silent Base 802 schwarz
- Netzteil
- be quiet! Straight Power 11 Platinum 550W
- Tastatur
- Logitech G613 Lightspeed
- Maus
- Logitech M510
- Betriebssystem
- Ubuntu Linux 22.04
- Webbrowser
- Vivaldi
- Internetanbindung
-
▼100 MBit
▲40 MBit
Du meinst die Registry. Regedit ist nur ein Editor für eben jene.d0x schrieb:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/registry_functions.aspd0x schrieb:aus diesem Posting
Würde die ausserdem gerne durchsuchen. z.b. nach der ICQ version oder sonst irgendwas. Hat einer ne idee wie ich in die registry reinkomm? Denke mal das suchverfahren kann ich dann noch selber schreiben(jenachdem wie das handling von der lösung dann ist).
-> RegOpenKeyEx, RegEnumKeyEx, RegEnumValue, RegCloseKey...
http://msdn.microsoft.com/library/d...en-us/fileio/fs/file_management_functions.aspd0x schrieb:aus diesem Posting
Ich würde auch noch gerne die Festplatte durchsuchen. Und zwar nach einem dateinamen. Ich weiss wie ich dateien öffne und verarbeite, aber leide muss ich da immer den pfad angeben. Hätte gerne ein programm, das mir alle blah.txt auf der festplatte sucht und den pfad in einen string schreibt (oder in verschiedene strings). Ich hab leide keine ahnung wie ich die verzeichnisse durchsuchen kann.
-> FindFirstFile, FindNextFile, FindCloseFile...
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/getusername.aspd0x schrieb:aus diesem Posting
Als letztes würde ich gerne den Anmeldename (bei xp) rausbekommen. Habe mir schon die umgebungsvariablen angeschaut aber da gibts keine die den benutzernamen enthalten. höchstens in %temp% da steht er im pfad, allerdings weiss ich auch nciht wie ich %temp% in einen c++ string speicher.
ok, hat so alles geklappt.
Kann mir mal bitte noch einer sagen wie eine datei von einer hompepage geladen bekomme (z.b. http://d0x.gmxhom.de/test.exe ) .
also ich hatte mir überlegt eine verbindung zur homepage über sockets aufzubauen und mir sie dann mit dem get befehel byteweise zu saugen und gleichzeitg jedes byte zu speichern. Problem ist nur, das ich nicht verstellen kann wielang der byts empfangen muss. Ich hatte erst gedacht das ich das empfangene byte auf das zeichen \eof prüfe, leider ohne erfolg. Ich glaub es steht ja auch nicht bei jeder datei \eof am ende oder? Und die zeit wenn man was byteweise empfängt ist auch zu lange
Also bisher kann ich für dieses problem zu lösen sockets aufbauen, dateien binär speichern (fstream.h).
Danke im vorraus,
d0x
Kann mir mal bitte noch einer sagen wie eine datei von einer hompepage geladen bekomme (z.b. http://d0x.gmxhom.de/test.exe ) .
also ich hatte mir überlegt eine verbindung zur homepage über sockets aufzubauen und mir sie dann mit dem get befehel byteweise zu saugen und gleichzeitg jedes byte zu speichern. Problem ist nur, das ich nicht verstellen kann wielang der byts empfangen muss. Ich hatte erst gedacht das ich das empfangene byte auf das zeichen \eof prüfe, leider ohne erfolg. Ich glaub es steht ja auch nicht bei jeder datei \eof am ende oder? Und die zeit wenn man was byteweise empfängt ist auch zu lange
Also bisher kann ich für dieses problem zu lösen sockets aufbauen, dateien binär speichern (fstream.h).
Danke im vorraus,
d0x
- Mitglied seit
- 16.11.2001
- Beiträge
- 21.665
- Renomée
- 1.247
- Standort
- München
- Aktuelle Projekte
- World Community Grid
- Lieblingsprojekt
- Folding@Home
- Meine Systeme
- AMD Ryzen 9 5950X
- BOINC-Statistiken
- Folding@Home-Statistiken
- Prozessor
- AMD Ryzen 9 5950X
- Mainboard
- ASUS TUF Gaming X570-Pro [WI-FI]
- Kühlung
- be quiet! Shadow Rock 3
- Speicher
- 4x 16GB DDR4-3200 Corsair Vengeance LPX
- Grafikprozessor
- ASRock Radeon RX 550 Phantom Gaming Aktiv 2GB
- Display
- LG 27UL850-W, 27"
- SSD
- Samsung 980 PRO 2TB, Samsung 840 EVO 500GB
- HDD
- Seagate Barracuda 7200.14 3TB SATA3
- Optisches Laufwerk
- Samsung SH-S183A SATA schwarz (im externen Gehäuse)
- Gehäuse
- be quiet! Silent Base 802 schwarz
- Netzteil
- be quiet! Straight Power 11 Platinum 550W
- Tastatur
- Logitech G613 Lightspeed
- Maus
- Logitech M510
- Betriebssystem
- Ubuntu Linux 22.04
- Webbrowser
- Vivaldi
- Internetanbindung
-
▼100 MBit
▲40 MBit
http://msdn.microsoft.com/library/d...y/en-us/wininet/wininet/wininet_functions.asp
-> Mit InternetOpenUrl oder HttpOpenRequest ein Handle auf die Datei erzeugen; mit InternetReadFile oder InternetReadFileEx die Datei runterladen; mit InternetCloseHandle das Handle freigeben.
Wichtig für InternetReadFile:
HTH
TiKu
-> Mit InternetOpenUrl oder HttpOpenRequest ein Handle auf die Datei erzeugen; mit InternetReadFile oder InternetReadFileEx die Datei runterladen; mit InternetCloseHandle das Handle freigeben.
Wichtig für InternetReadFile:
To ensure all data is retrieved, an application must continue to call the InternetReadFile function until the function returns TRUE and the lpdwNumberOfBytesRead parameter equals zero.
HTH
TiKu
Kann es sein das die MSDN-Befehle alles können?
Welchen Editor benutzt ihr? Bzw. könnt ihr mir einen empfehlen mit dem ich auch komerzielle sachen schreiben kann, der ziemlich gut ist? Also das er so n debugger hat wieder der Borland C++ Builder wäre ganz gut. Und weis einer von euch wie das mit den Lizenzen mit dem Borland C++ Builder 5 ist. Mit hat einer gesagt das Borland die nicht mehr verwaltet und deswegen wäre das dann kostenlos. Borland selber hat nur ne englische hotline und dafür reicht mein englisch net aus.
Welchen Editor benutzt ihr? Bzw. könnt ihr mir einen empfehlen mit dem ich auch komerzielle sachen schreiben kann, der ziemlich gut ist? Also das er so n debugger hat wieder der Borland C++ Builder wäre ganz gut. Und weis einer von euch wie das mit den Lizenzen mit dem Borland C++ Builder 5 ist. Mit hat einer gesagt das Borland die nicht mehr verwaltet und deswegen wäre das dann kostenlos. Borland selber hat nur ne englische hotline und dafür reicht mein englisch net aus.
- Mitglied seit
- 16.11.2001
- Beiträge
- 21.665
- Renomée
- 1.247
- Standort
- München
- Aktuelle Projekte
- World Community Grid
- Lieblingsprojekt
- Folding@Home
- Meine Systeme
- AMD Ryzen 9 5950X
- BOINC-Statistiken
- Folding@Home-Statistiken
- Prozessor
- AMD Ryzen 9 5950X
- Mainboard
- ASUS TUF Gaming X570-Pro [WI-FI]
- Kühlung
- be quiet! Shadow Rock 3
- Speicher
- 4x 16GB DDR4-3200 Corsair Vengeance LPX
- Grafikprozessor
- ASRock Radeon RX 550 Phantom Gaming Aktiv 2GB
- Display
- LG 27UL850-W, 27"
- SSD
- Samsung 980 PRO 2TB, Samsung 840 EVO 500GB
- HDD
- Seagate Barracuda 7200.14 3TB SATA3
- Optisches Laufwerk
- Samsung SH-S183A SATA schwarz (im externen Gehäuse)
- Gehäuse
- be quiet! Silent Base 802 schwarz
- Netzteil
- be quiet! Straight Power 11 Platinum 550W
- Tastatur
- Logitech G613 Lightspeed
- Maus
- Logitech M510
- Betriebssystem
- Ubuntu Linux 22.04
- Webbrowser
- Vivaldi
- Internetanbindung
-
▼100 MBit
▲40 MBit
MSDN-Befehle ist der falsche Begriff. Windows enthält ein Subsystem namens Win32, welches die Innereien des Betriebssystems kapselt und ein relativ stabiles (d. h. auf hohe Kompatibilität ausgelegtes) Interface (Application Programming Interface - API) bietet. Win32-API ist eigentlich der richtige Begriff.d0x schrieb:
Das MSDN (Microsoft Developer Network) ist eine Sammlung von Beispielen, Dokumentationen, Artikeln usw. über Windows, Office, DirectX, IE, IIS, Visual Studio, WMP usw., wobei es sich (wie der Name schon verrät) an Entwickler und nicht an Endanwender richtet. Teil des MSDN ist das Platform SDK, welches das Win32-Subsystem beleuchtet. Das Platform SDK enthält auch alles nötige um das Win32-API in eigenen C/C++-Anwendungen zu nutzen - sprich: Header-Dateien, Libraries, diverse Tools usw.
Für die allermeisten Anwendungen bietet das Win32-API (oder darauf basierende Bibliotheken) alles was man braucht. Lediglich sehr systemnahe Software wie Defragmentierer greift direkt auf das Kernel-API zurück.
Ich nutze Visual Studio 2003, welches ich über die Uni kostenlos bekommen habe. Davor habe ich Visual Studio 6.0 genutzt, welches ich mir vor einigen Jahren gekauft hatte.d0x schrieb:aus diesem Posting
Welchen Editor benutzt ihr? Bzw. könnt ihr mir einen empfehlen mit dem ich auch komerzielle sachen schreiben kann, der ziemlich gut ist? Also das er so n debugger hat wieder der Borland C++ Builder wäre ganz gut. Und weis einer von euch wie das mit den Lizenzen mit dem Borland C++ Builder 5 ist. Mit hat einer gesagt das Borland die nicht mehr verwaltet und deswegen wäre das dann kostenlos. Borland selber hat nur ne englische hotline und dafür reicht mein englisch net aus.
IMHO gibt es nichts besseres als Visual Studio 2003. Wenn es nur um .net geht, kann maximal #develop Corsavy halbwegs mithalten. Für C++ wird oft Dev-C++ empfohlen (einfach mal nach DevCpp googlen). Eclipse ist auch recht beliebt (ist eigentlich für Java, aber es gibt ein Plugin für C++).
Ich komme da mit den Funktionen nicht klar. Kannst du mir evtl einen beispielcode geben um die datei http://d0x.gmxhome.de/cc3250.dll runter zu downloaden. Ich blicke nicht ganz durch. Verstehe die beschreibung mit den datentypen net. LTPSTR und so ist für mich neu. Genau wie DWORD. Habs so noch nie genutzt. Bei den anderen funktionen konnte ich mir aus den Beispielcodes alles zusammenkopieren und im debugger nachvollziehen.
- Mitglied seit
- 16.11.2001
- Beiträge
- 21.665
- Renomée
- 1.247
- Standort
- München
- Aktuelle Projekte
- World Community Grid
- Lieblingsprojekt
- Folding@Home
- Meine Systeme
- AMD Ryzen 9 5950X
- BOINC-Statistiken
- Folding@Home-Statistiken
- Prozessor
- AMD Ryzen 9 5950X
- Mainboard
- ASUS TUF Gaming X570-Pro [WI-FI]
- Kühlung
- be quiet! Shadow Rock 3
- Speicher
- 4x 16GB DDR4-3200 Corsair Vengeance LPX
- Grafikprozessor
- ASRock Radeon RX 550 Phantom Gaming Aktiv 2GB
- Display
- LG 27UL850-W, 27"
- SSD
- Samsung 980 PRO 2TB, Samsung 840 EVO 500GB
- HDD
- Seagate Barracuda 7200.14 3TB SATA3
- Optisches Laufwerk
- Samsung SH-S183A SATA schwarz (im externen Gehäuse)
- Gehäuse
- be quiet! Silent Base 802 schwarz
- Netzteil
- be quiet! Straight Power 11 Platinum 550W
- Tastatur
- Logitech G613 Lightspeed
- Maus
- Logitech M510
- Betriebssystem
- Ubuntu Linux 22.04
- Webbrowser
- Vivaldi
- Internetanbindung
-
▼100 MBit
▲40 MBit
LPTSTR und DWORD sind Datentypen. DWORD ist ein Doppelwort, also eine 32Bit-Ganzzahl (auf 32Bit-Systemen), und zwar unsigned. LPTSTR ist ein Zeiger auf eine 0-terminierte Zeichenkette. Bei einem ANSI-Build ist diese Zeichenkette ein ANSI-String, bei einem Unicode-Build ein Unicode-String.
Ich habe die genannten API-Funktionen selbst noch nie genutzt, hab mich aber trotzdem mal an einem kleinen Programm versucht, welches anscheinend sogar funktioniert.
Der Code weicht etwas von dem ab was ich anfangs gepostet hatte. Aber ich hab die Internet*-API-Funktionen heute wie gesagt das 1. Mal genutzt.
Das Makro _T() gibt einen LPTSTR-Zeiger auf den übergebenen String zurück. Falls Du sonst noch Fragen zum Code hast: frag ruhig. 8)
Ich habe die genannten API-Funktionen selbst noch nie genutzt, hab mich aber trotzdem mal an einem kleinen Programm versucht, welches anscheinend sogar funktioniert.
Code:
// WebTest.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
//
// benötigt für STL
#include <iostream>
#include <conio.h>
// benötigt für _TCHAR
#include <tchar.h>
// benötigt für die Basis-Funktionen (u. a. WriteFile) des Win32-API
#include <windows.h>
// benötigt für die Internet*-Funktionen
#include <wininet.h>
// gegen die wininet.lib linken
#pragma comment(lib, "wininet.lib")
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
cout << "Press any key to start download" << endl;
getch();
cout << "Please wait...";
///////////////////////////////////////////////////////////////////
// Session öffnen
HINTERNET hInet = InternetOpen(_T("MyAppName"), INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
if(hInet != NULL) {
// Verbindung zum Server herstellen
HINTERNET hRemoteFile = InternetOpenUrl(hInet, _T("http://d0x.gmxhome.de/cc3250.dll"), NULL, 0, INTERNET_FLAG_RELOAD, NULL);
if(hRemoteFile != NULL) {
// die lokale Datei erzeugen, in die wir schreiben werden
HANDLE hLocalFile = CreateFile(_T("C:\\cc3250.dll"), GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if(hLocalFile != NULL) {
// solange Daten verfügbar sind...
DWORD numberOfBytesAvailable = 0;
while(InternetQueryDataAvailable(hRemoteFile, &numberOfBytesAvailable, 0, 0)) {
if(numberOfBytesAvailable > 0) {
// ...allokiere einen Puffer...
LPVOID pBuffer = malloc(numberOfBytesAvailable);
// ...und fülle ihn mit den verfügbaren Daten
DWORD numberOfBytesRead = 0;
if(InternetReadFile(hRemoteFile, pBuffer, numberOfBytesAvailable, &numberOfBytesRead) == FALSE) {
// TODO: Fehlerbehandlung
}
if(numberOfBytesRead != numberOfBytesAvailable) {
// TODO: Fehlerbehandlung
}
// empfangene Daten in die lokale Datei schreiben
DWORD numberOfBytesWritten = 0;
if(WriteFile(hLocalFile, pBuffer, numberOfBytesRead, &numberOfBytesWritten, NULL) == FALSE) {
// TODO: Fehlerbehandlung
}
if(numberOfBytesWritten != numberOfBytesRead) {
// TODO: Fehlerbehandlung
}
// Puffer wieder freigeben
free(pBuffer);
} else {
break;
}
}
// das Handle freigeben
CloseHandle(hLocalFile);
}
// das Handle freigeben
InternetCloseHandle(hRemoteFile);
}
// das Handle freigeben
InternetCloseHandle(hInet);
}
///////////////////////////////////////////////////////////////////
cout << "Done." << endl;
return 0;
}
Das Makro _T() gibt einen LPTSTR-Zeiger auf den übergebenen String zurück. Falls Du sonst noch Fragen zum Code hast: frag ruhig. 8)
Ok danke. Werds mir nachher (in der pause) evtl mal genauer anschauen (sonst heute abend). Bin gerade auf der arbeit und hier wird nur RPG (ältere Programmiersprache für Warenwirtschaft) benutzt. Ist IBM gebunden, deswegen kennt man es kaum. ist ein Wort nicht immer
Ähnliche Themen
- Antworten
- 19
- Aufrufe
- 6K
- Antworten
- 39
- Aufrufe
- 3K
- Antworten
- 0
- Aufrufe
- 377K
- Antworten
- 0
- Aufrufe
- 142K