![]() |
SysInfo
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
JUHU! Mein erstes nonVCL-Programm. Dieses Programm spuckt ein paar Informationen zu den Usern und zum Rechner aus. Ggf. erweitere ich es noch. Ihr braucht allerdings Windows eNTe, 2kay oder X(perience)P(roblems). Für den Source braucht ihr noch die Win32-Header-Übersetzungen der JEDIs. So, ruhig Kritik äußern. Ist halt mein 1. nonVCL-Programm. Chris PS: Nur 200KB. *hähä* |
Bei mir ist es 362 KB groß, deine Exe. Mit VCL wäre es wohl nur 25 kB größer geworden.
Und wo ist das nonVCL?
Code:
Dialogs, Classes und Graphics gehören zur VCL. versuch das ganze mal nur mit Windows, Messages und ShellAPI. Die Stringlist ersetzt du durch ein dynamisches Array of String. Die SysUtils kannst du eventuell auch noch rausschmeißen, ich habe jetzt nicht gekuckt, für was du die brauchst.
uses
SysUtils, Windows, Messages, ShellApi, Dialogs, JwaLm, CommCtrl, System, Classes, Graphics; Du wärst echt billiger mit der VCL und ein paar API Funktionen weggekommen. Und das, was an Infos rauskommt, ist auch nicht gerade der Hammer. Kuck dir mal mein SysInfo an. Desweiteren kommt es zu einer Fehlermeldung, wenn man dein Pogramm startet ohne eine CD im laufwerk zu haben. |
Hi Luckie,
Entschuldigung, dass mein erstes nonVCL-Programm dem Großmeister der nonVCL nicht gerecht ist! :x :evil: Zu deiner Beruhigung: Die Uses sehen jetzt so aus:
Delphi-Quellcode:
Desweiteren: Bei mir kommt dieser Fehler nicht.
uses
Windows, Messages, ShellApi, JwaLm, CommCtrl, SysUtils; Wegen deinem Programm: Danke, nein! Habe ich schon und ich weiß, dass es durchaus bessere Programme gibt, aber vielleicht will der eine oder andere auch ersteinmal einsteigen! Chris :| |
Zitat:
Zitat:
|
Gaaaaaaaaaanz ruhig bleiben, Chakotay.
Jeder hat mal angefangen. Auch der "Großmeister", der sich diesen Titel übrigens ja nicht selbst verliehen hat ... Und du hast dein Programm als NonVCL angekündigt und um Kritik gebeten! Also, nicht aufregen wenn man dich beim Wort nimmt. |
So, Chakotay: 23,5k ist das Ergebnis. Das hier ist von den Units übrig:
Delphi-Quellcode:
Dadurch musst du natürlich auf typische SysUtils-Funktionen verzichten, etwa
uses
Windows, Messages, JwaLm, CommCtrl;
Code:
Für die Zeitanzeige des Logins habe ich mich im Code von Luckie bedient. Frag ihn mal, ob er dir den entsprechenden Part zukommen lässt. (@Luckie: "Int32x32To64" und "SecsToDateTime".) Dafür fiel die "UnixToDateTime" komplett raus, und die entsprechende Anweisung sähe mit Luckies Code dann so aus:
[b]function[/b] IntToStr([b]const[/b] i: integer): [b]string[/b];
[b]begin[/b] Str(i,Result); [b]end[/b]; [b]function[/b] StrLen([b]const[/b] Str: PChar): Cardinal; [b]assembler[/b]; [b]asm[/b] MOV EDX,EDI MOV EDI,EAX MOV ECX,0FFFFFFFFH XOR AL,AL REPNE SCASB MOV EAX,0FFFFFFFEH SUB EAX,ECX MOV EDI,EDX [b]end[/b];
Delphi-Quellcode:
Dann -anfangs!- konnte ich dein Programm nicht mal kompilieren. Der Fehler lag hier:
if aCurUserBuffer.usri11_last_logon = 0 then
TempS := 'Letzer LogIn: (nie)' else TempS := SecsToDateTime(aCurUserBuffer.usri11_last_logon);
Code:
Nachdem ich das rot markierte durch "pointer(aUserBuffer)" ersetzt habe (an anderer Stelle wird das noch mal bemängelt!), ging´s dann. Vielleicht solltest du deinen diesbezüglichen FAQ-Eintrag ausbessern?!
[b]if[/b] NetUserEnum([b]nil[/b], 11, FILTER_NORMAL_ACCOUNT, [color=#ff0000]@aUserBuffer[/color],
MAX_PREFERRED_LENGTH, dwEntriesRead, dwEntriesRead, ... Tja, und zu guter Letzt ein kleiner Bugfix, weil der untere Teil des Treeview nicht zu sehen ist, wenn man ein paar Knoten aufklappt. Also, dies hier steckt im "WM_CREATE":
Delphi-Quellcode:
"r1" und "r2" sind zwei TRect-Variablen. Die holen die Größe des Fensters und des Banners und setzen abhängig davon die korrekte TV-Größe, so dass der horizontale Scrollbalken dann auch komplett zu sehen ist.
{ ... }
GetWindowRect(hwndTitleLab,r1); GetClientRect(hWnd,r2); hWndTV := CreateWindowEx(WS_EX_CLIENTEDGE, 'SysTreeView32', 'Tree View', WS_VISIBLE or WS_CHILD or TVS_HASBUTTONS or TVS_HASLINES or TVS_LINESATROOT, 0, 50, { --> } r2.Right - r2.Left, { --> } (r2.Bottom - r2.Top) - (r1.Bottom - r1.Top), hwnd, IDC_LISTVIEW, hInstance, nil); { ... } So, wenn ich jetzt nichts vergessen habe, dann solltest du dein Programm auch "klein kriegen". :wink: Und dann kann man´s als NonVCL durchgehen lassen. Gruß. PS: Als humorvoller Mensch, dessen Interesse insbesondere den kleinen Doppeldeutigkeiten des Alltags gilt, vergebe ich hiermit den Preis für den Variablennamen des Monats:
Delphi-Quellcode:
:mrgreen:
var
fTitFont: HFONT; |
Zitat:
|
Keine Ahnung. Ich erinnere mich nur daran, dass "Int32x32To64" hier zu finden ist. Bei deiner Zeitgeschichte gab´s damals Probleme, die wir ja via Mail lösen konnten. Wenn du den aktuellen und funktionierenden Stand hier ins Forum geschrieben hast, dann müsste Chak-o-tay eigentlich fündig werden.
|
|
:oops: Ich hielt das Thema für erledigt, deswegen habe ich da gar nicht mehr reingeschaut ... Aber zu diesem Zitat
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz