Zum Inhalt springen

orsino

Mitglieder
  • Gesamte Inhalte

    33
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von orsino

  1. Alles was du mit VS6 gemacht hast, sollte auch mit VS .Net funktionieren. Wenn du nichts mit dem .Net Framework machen möchtest, kannst du weiterhin normale MFC/ATL Anwendungen programmieren. Bei der MFC ist einiges neu aber zumindest nichts was das .Net Framework erforderlich macht. Bei MS kannst du dir auch WTL7 mit einem AppWizard für VS .Net runterladen. Du kannst also ganz normale C++ Sachen machen. In der MSDN gibt es eine interessante Column - .'Deep C++' Dort findest du einiges zum neuen Compiler, Probleme bei der Standard-Konformität und neue Features. Ein Problem bei MC++ ist der fehlende Dialog-Editor, für MFC kannst du weiterhin den gewohnten Editor benutzen. In zukünftigen Versionen soll auch für MC++ ein Editor dabei sein. Wenn du also GUI Apps für .Net machen willst ist C# wohl die beste Wahl - sofern du eine Sprache bevorzugst, die Anweisungen mit einem Semikolon beendet ;-). Dein Rechner sollte nicht der langsamste sein. MS sagst selbst, dass VS .Net nicht für eine minimale Konfiguration (Speicher, CPU) gedacht ist. Aus technologischer Sicht macht C# und das Entwickeln mit dem .Net Framework schon eine Menge Spaß. Der Code gefällt mir viel besser als bei MFC. Ein Kritikpunkt ist vielleicht, dass vielen der .Net Klassen für die CommonCtrls etwas Funktionalität fehlt. Da mußt du eben selbst aktiv werden.
  2. Gut, das gehört zwar nicht in diesen Thread aber wieso soll das nicht gehen? So was wie EnumWindows ist kein Problem und als Callback können Delegates benutzt werden. Für anwendungsspezifische Hooks gibts es hier ein Beispiel:How can I use 'Hooks' in .Net und mit dem folgenden MC++ Code ist auch ein globaler Hook möglich. // Hook.h #pragma once #include <windows.h> #undef MessageBox #using <mscorlib.dll> #using <system.dll> #using <system.windows.forms.dll> using namespace System; using namespace System::Windows::Forms; using namespace System::Reflection; using namespace System::Runtime::InteropServices; HHOOK g_Hook; int _stdcall KeyboardProc(int code, int wparam, int lparam) { String __gc* text = String::Concat(S"You pressed : ", __box(((Keys)wparam))->ToString()); MessageBox::Show(text, S"Hook Message", MessageBoxButtons::OK); return CallNextHookEx(g_Hook, code, wparam, lparam); } public __gc class GlobalHook { private: GlobalHook() {}; public: static void SetHook() { if (g_Hook != 0) return; Module __gc* mod = Assembly::GetExecutingAssembly()->GetModule(S"Hook.dll"); IntPtr hinst = Marshal::GetHINSTANCE(mod); g_Hook = SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)KeyboardProc, static_cast<HINSTANCE>(hinst.ToPointer()), 0); } static void Unhook() { if (g_Hook != 0) { UnhookWindowsHookEx(g_Hook); g_Hook = 0; } } }; Es wäre sicherlich nicht sinnvoll, wenn jeder innerhalb eines Projekts mit seiner bevorzugten Sprache entwickelt und ich glaube auch nicht, dass das ein Unternehmen zulassen wird. Aber Mehrsprachlichkeit ist nun mal ein Fakt und daran hat Java bestimmt nichts geändert. Warum soll MS sich auf eine Sprache festlegen und sich viele Türen verschließen. Man entwickelt z.B. ein Projekt in Sprache x und möchte fertige Komponenten von einem anderen Anbieter benutzen. Der hat in Sprache y entwickelt - kein Problem. Ein weiterer Grund wäre, dass bestimmte Sprachen für einige Probleme besser geeignet sind. Es gibt zum Beispiel Haskell (eine funktionale Sprache) für .Net. Es wird ja keiner gezwungen jedes größere Projekt in mindestens 3 Sprachen zu entwickeln. Wenn man allerdings darauf angewiesen ist oder es gute Gründe gibt, besteht zumindest die Möglichkeit.
  3. ProcessExplorer - sollte jeder haben. http://www.sysinternals.com/ntw2k/freeware/procexp.shtml
  4. Also .NET ist ja nicht bloß C#. Das beste an .NET ist meiner Meinung nach die Möglichkeit verschiedenen Sprachen einzusetzen und dass man die fertigen Komponenten auch objektorientiert weiter verwenden kann, z.B. in anderen Sprachen von den vorhandenen Klassen abzuleiten. Java ist auch nicht besonders fortschrittlich in der Entwicklung. Angeblich denkt man bei Sun darüber nach endlich Templates einzuführen. Bertrand Meyer (Designer von Eiffel) hat einige interessante Artikel zu .Net veröffentlicht. http://www.fawcette.com/dotnetmag/2001_12/online/online_eprods/bmeyer/ http://www.sdmagazine.com/documents/s=7134/sdm0205j/ Jemand hat im Thread geschrieben, dass es schwieriger wäre die WinAPI von .NET Anwendungen aus zu nutzen. Zuerst schien mir das auch so, aber mittlerweile habe ich festgestellt, dass es auch hier wesentlich besser als MFC ist. Wenn man z.B. einen ListView mit OwnerDraw haben möchte, überschreibt man einfach die WndProc Funktion und kann alle entsprechende Windows Nachrichten abfangen und selbst behandeln. In C# besteht zwar der Nachteil das verwendete API structs und enums neu definiert werden müssen, aber man kann das ganze ja auch in MC++ machen und von C# aus oder was auch immer verwenden.
  5. orsino

    .net

    Wenn du etwas über Hintergründe und Philosophie erfahren willst dann schau (hör) dir mal die technet casts von Don Box an. Die sind wirklich großartig. http://technetcast.ddj.com/tnc_search.html?key=don+box http://www.only4gurus.com/webcasts/teched02.asp
  6. orsino

    Windows 2000 Instabil

    Was heißt media dateien lassen sich nicht mehr verschieben? Kannst du das etwas genauer beschreiben?
  7. INTERNET_CONNECTION_OFFLINE ist in WinInet.h (Internet Development SDK) definiert.
  8. C++, JAVA, Smalltalk, Visual Basic sind keine deklarativen Sprachen. Beispiele sind Prolog (damit habe ich keine Erfahrung), XSLT, SQL.
  9. Mir ist nicht ganz klar was Du mit binary mode meinst. In C# würde das vielleicht so aussehen. In VB.Net müsstest Du anstelle der using Anweisung explizit try-catch-finally Blöcke verwenden. using (FileStream stream = File.Open("test.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None)) { StreamWriter writer = new StreamWriter(stream); stream.Position = stream.Length; // alternativ stream.Seek(0, SeekOrigin.End); writer.WriteLine("... something appended"); writer.Flush(); }
  10. Die member variablen werden, wie von crush schon erwähnt, in der reihenfolge ihrer deklaration in der klasse initialisiert. Der Grund ist einfach der, dass das zerstören der objekte genau in der umgekehrten reihenfolge der initialisierung ausgeführt wird. Verschiedene konstruktoren können eine unterschiedliche reihenfolge der initialisierungsliste festlegen und dann wäre die sache nicht eindeutig. Bei den aufrufen der konstruktoren der basisklassen ist die hierarchie entscheidend bzw. die reihenfolge in der liste basisklassen. class c : public a, public b konstruktor von a zuerst dann von b
  11. Unter Windows kannst du das zm Beispiel mit dem Windows Media Format SDK machen. Dort gibt es auch ein Beispiel ID3Tag.
  12. in Visual C/C++ kannst du SetConsoleCursorPosition benutzen.
  13. Warum nimmst du kein ListView control? ListView listView = new ListView(); listView.View = View.Details; listView.Columns.Add("column1", ...); listView.Columns.Add("column2", ...); ...
  14. Bei den linker optionen unter input/additional dependencies musst du die benötigten libs angeben, z.B Strmiids.lib für DirectShow Projekte. In der Msdn ist beschrieben welche libs für welche Projekte notwendig sind.
  15. Man kann, das workbook objekt hat ein 'open' event.
  16. Für wirklich 'dynamische' Arrays solltest du dir den namespace System.Collections ansehen, z.B. System.Collections.ArrayList.
  17. Dim Test_array() As String deklariert nur die die Variable Test_array als eindimensionales Array von Strings, ein Array Objekt worauf sich die Variable bezieht existiert noch nicht. Man kann das entweder mit der Deklaration verbinden: Dim Test_array(0) As String oder später zuweisen Test_array = New String(4) {} ' array mit 5 elementen des typs String Bei der Längenangabe gibt man den größten Index an. Das hat sich ab Beta2 geändert, vorher war es die Anzahl der Elemente. Die Onlinehilfe ist in diesem Punkt teilweise noch nicht aktualisiert. ein kleines Beispiel: Dim stringArray() As String Console.WriteLine("Is stringArray nothing ? : {0}", stringArray Is Nothing) ' prints true stringArray = New String(0) {} Console.WriteLine("length of stringArray is : {0}", stringArray.Length) ' prints 1 stringArray(0) = "Test" Console.WriteLine(stringArray(0)) ' prints Test
  18. To modify the behavior of RAS when logging off, change the value of the following registry key: HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon KeepRasConnections REG_SZ Range: 0 or 1 Default: 0 (disabled) You should restart the computer after making this change. By default, when logging off, Windows closes all RAS connections opened during the session. If this registry key value is added and set to 1, the system will not close RAS connections when logging off. This registry key value does not appear in the registry unless you add it. Eine andere Möglichkeit wäre es einen service zu schreiben der automatisch beim Hochfahren eine Verbindung aufbaut.
  19. Was kommt denn für ein Fehler? Ein Syntax Fehler oder ein Laufzeitfehler? Und an welcher Stelle? An dem += kanns wohl kaum liegen, das sollte jede script engine verstehen. Ich hab hier noch mal den link in der msdn. http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/js56jsopraddequ.asp Auf XP müsste die aktuelle version des WSH (5.6) installiert sein. Ich hab das script einfach mit copy und paste übertragen, also sollte es auf jeden Fall funktionieren. Wenn du es in ein file überträgst, dann muss es die Endung wsf haben, js wird nicht funktionieren. In einem js file musst du erst die tags job und script am Anfang und am Ende entfernen. Es wäre auf jeden Fall sinnvoll zu testen ob die Batterie erkannt wird bevor du es in vb überträgst.
  20. Hab mir fast gedacht, dass es nicht gehen wird. Man muss sich wahrscheinlich über instancesOf(classname) alle vorhanden Batterien holen. Im Script war eine auskommentierte oTest Variable die das macht. Ich hab das ganze mal für die Klasse DesktopMonitor ausprobiert und dann klappt es mit instancesOf. Mit dem folgenden Script sollte es funktionieren. job id="main"> <script language="JScript"> function ShowDevices(instances, className) { var enumInstances = new Enumerator(instances); for ( ; !enumInstances.atEnd(); enumInstances.moveNext() ) { var oDevice = enumInstances.item(); var msg = new String(); var enumProps = new Enumerator(oDevice.Properties_); for (; !enumProps.atEnd(); enumProps.moveNext() ) { var prop = enumProps.item(); msg += prop.Name + " : " + prop.Value + "\n"; // same as msg = msg + prop.Name + " : " + prop.Value + "\n"; } oShell.Popup(msg, 0, className + " Device", 0); } } //main var oShell = new ActiveXObject("WScript.Shell"); // Monitors should work var oMonitors = GetObject("WinMgmts:").InstancesOf ("Win32_DesktopMonitor"); ShowDevices(oMonitors, "Monitor"); // same for battery var oBatteries = GetObject("WinMgmts:").InstancesOf ("Win32_Battery"); if (oBatteries.Count == 0) WScript.Echo("No Batteries available"); else ShowDevices(oBatteries, "Battery"); </script> </job> Wenn nur eine Batterie gefunden wird, dann kannst du auf den for loop verzichten und direkt mit var oBattery = new Enumerator(oBatteries).item(0) arbeiten. msg += "noch was ..."; += ist der so genannte Addition Assignment Operator in JScript. result += expression entspricht result = result + expression
  21. http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnmag01/html/c0110Mag.asp
  22. Das geht wohl am besten mit WMI (Windows Management Instrumentation). Sieh dir mal die Klasse Win32_Battery an. Die BatteryStatus Eigenschaft enthält Informationen über den Ladezustand. In der MSDN solltest du alles über WMI finden und die WSH Hilfe hat auch ein kleines Beispiel. hier ein kleines test wsf (ich habe nur einen Desktop PC ohne Batterie, weiß also nicht, ob es auf einem notebook funktioniert) <job id="main"> <script language="JScript"> // var oTest = GetObject("WinMgmts:").InstancesOf ("Win32_Battery"); var oBattery = GetObject("WinMgmts:Win32_Battery"); var msg = new String(); var enumProps = new Enumerator(oBattery.Properties_); for (; !enumProps.atEnd(); enumProps.moveNext() ) { var prop = enumProps.item(); msg += prop.Name + " : " + prop.Value + "\n"; } WScript.Echo(msg); </script> <script language="VBScript"> Set oBattery = GetObject("WinMgmts:Win32_Battery") Dim msg Dim prop For Each prop in oBattery.Properties_ msg = msg & prop.Name & " : " & prop.Value & vbcrlf next WScript.Echo(msg) </script> </job>
  23. Wenn es bist jetzt nicht für Win98 erschienen ist, wird es das sicherlich auch in Zukunft nicht tun. Für Microsoft ist Win98 tot und es wird nicht mehr in Entwicklung für diese Plattform investiert. Einige haben einen Hack gefunden wie man die SDK auf Win98 installieren kann. Das ganze erscheint mir aber sehr fragwürdig und unter Win98 zu entwickeln ist sowieso eine Strafe.
  24. Kuck mal unter Program Files\Microsoft Visual Studio .NET\Common7. Dort ist bei mir die Datei dotnetredist.exe. Die mußt du auf dem Win98 installieren. Auf der CD/DVD solltest du auch die Datei dotnetfx.exe finden.
  25. Mit dem Programm Dependency Walker (depends.exe ist bei VS6, VS.NET dabei) kann man sich die exportierten Funktionen einer DLL anzeigen. Es bietet außerdem die Möglichkeit sich bei c++ Funktionen die nicht dekorierten Namen anzeigen zu lassen.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...