Autor Beitrag
hitstec
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 295



BeitragVerfasst: Mi 01.01.03 15:35 
Mein neuestes Werk heißt NetInstantMessenger, kurz NIM.
Es handelt sich, um ein Tool, mit dem man im Netz mit statischen IPs miteinander kommunizieren kann.

Hier die Kurzübersicht:
- Im Netzwerk Nachrichten schnell und einfach verschicken.
- Audiokonferenzen sind möglich.
- Vollautomatische Benutzerliste.
- Dateien anhängen und verschicken.
- Auch an mehrere Personen.
- Persönliche Angaben hinterlegen.
- Mit Statussymbol.
- Zentrale Verwaltung.
- Autoarchivierung.
- Ein vollintegrierter Chat.
- "Winpopup" oder der "net send" Implementierung.
- Syncronisation der Uhrzeit mit einem Netzpc.


Es handelt sich um eine Beta-Version.
Version: 0.0.6.51
Datum: 26.01.2003 22:26:00
Dateigröße: 0.303 MB

Bitte vor dem direkten Download die Lizenzbestimmungen auf dieser Seite nim.hitstec.de/download.php kurz durchlesen.
Direkter Download: www.hitstec.de/archiv.php?tool=3

Die Doku gibt es zur Zeit nur online: nim.hitstec.de/hilfe.php

Ich hoffe viel Rückmeldung zu erhalten.
Merci im Voraus.


Zuletzt bearbeitet von hitstec am So 26.01.03 23:30, insgesamt 5-mal bearbeitet
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 02.01.03 12:12 
Hi hitstec.


Konfigurationsdateien gehören nicht ins Windows-Verzeichnis! Im deinem Fall sowieso nicht, da NIM (meiner Meinung nach) ein benutzerabhängiges Tool ist. Sollten sich mehrere Leute einen Rechner teilen müssen und NIM nutzen wollen, dürfte wohl jeder eigene Vorstellungen von der Konfiguration haben. Einer mag Sound, ein anderer nicht. Im Augenblick kann Benutzer A die Einstellungen von Benutzer B ändern und umgekehrt, da alle auf die selbe CFG-Datei zugreifen.

Dieses Verhalten ist ein unschönes Überbleibsel aus Zeiten von Win 3.x und 95, als jedes x-beliebige Programm seine Dateien in den Systemordnern ablegte und damit u.U. neuere Versionen überschrieb. Und grundlos wird´s eine entsprechende Empfehlung bzw. Vorgabe von Microsoft nicht geben!

Damit zu tun hat auch ein unschöner Bug, den ich unter Win XP (Pro) gefunden habe. Standardmäßig haben nämlich nur Administratoren, Hauptbenutzer und SYSTEM Schreibrecht im Windows-Ordner. Mit normalen Benutzer- bzw. Gastrechten erscheint logischerweise eine Fehlermeldung, dass die Datei nicht erstellt werden kann.
Das dürfte bei 2000 und NT ähnlich aussehen, zumal ich nur die Standardeinstellungen nutze. Andere Admins stellen die Systeme in der Firma oder privat noch restriktiver ein. Hier musst du also unbedingt nachbessern! Ich zitiere deine Online-Doku:
Zitat:
Diese Software sollte auf jedem Windows-PC funktionieren. Bis jetzt wurde sie auf auf Windows 95/98/ME/NT 4.0/2000/XP-Systemen erfolgreich getestet.


Außerdem gibt es eine Zugriffsverletzung, wenn man das Programm mit Benutzerrechten startet und dann abbrechen bzw. beenden/fertigstellen will. NIM ließ sich nur noch über den TaskMan abschießen.
Ich kann allerdings nur vom allerersten Start reden. Da ich meine Sicherheitseinstellungen nicht "aufweichen" will und werde, kam ich ja nicht weiter als bis zum Versuch, die CFG anzulegen. Klar, ich habe auch Admin-Rechte. Aber fremde Programme starte ich grundsätzlich mit Benutzerrechten. Und solche, die schreibend auf meinen Windows- o.ä. Ordner zugreifen wollen, fliegen sofort wieder raus.
hitstec Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 295



BeitragVerfasst: Do 02.01.03 17:34 
Aha, verstehe.

An sowas habe ich auch schon mal gedacht. Nun ich habe das Tool nur auf den Systemen mit Standardrechten getestet. Dort funktioniert es!

Ich weiß noch nicht, welchen Ordner ich für die CFG-File benutzen soll. Den Eigene Dateien Ordner zu nehmen ist glaube ich nicht sehr sinnvoll.

Kennt jemand eine PATH-Variable, die bei jedem Benutzer verschieden ist und die man für Systemdateien benutzen kann? Oder eine andere Idee?

Ich sehe schon das Problem, das MathiasSimmack beschrieben hat ist ziemlich schwerwiegend. Danke für den Hinweis.

Die Zugriffsverletzung kam höchst wahrscheinlich durch keine Schreibrechte zustande.


Nun, ich werde den Fehler ausbessern, sobald ich eine gute Lösung gefunden habe.

Danke nochmal @MathiasSimmack.
:wink:
Alibi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 458

Win2K SP3
Delphi 6 Ent
BeitragVerfasst: Do 02.01.03 17:39 
Ne gute Lösung ist für Settingsdateien einfach den gleichen Ordner wie die Exe zu verwenden.
Sonst, HKEY_CurentUser wäre ein Ort, WENN du eine Uninstalloption anbietest. z.B. ein Button "Registry Einträge entfernen".
hitstec Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 295



BeitragVerfasst: Do 02.01.03 17:49 
@Alibi:

Im gleichen Ordner wie die EXE ist natürlich ideal.
Aber ich will in einer späteren version einem Netzwerkadministrator die Möglichkeit geben, NIM im Netz freizugeben und NIM auf den Clients bei Bedarf eben aus dieser Freigabe her zu starten.
Der Vorteil ist, dass nicht unnötig Speicher verbraucht wird und das Updaten auf neuere Versionen wäre leicht erledigt, da man nur eine Datei ersetzen muss und nicht mehrere.

Die Registry will ich nicht benutzen - aus Performancegründen.

Aber wie wäre es mit dem Ordner "Lokale Einstellungen" oder "Local Settings"?
Alibi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 458

Win2K SP3
Delphi 6 Ent
BeitragVerfasst: Do 02.01.03 18:33 
"Die Registry will ich nicht benutzen - aus Performancegründen. "
Äh?
Also ob das nun 10ms oder 11ms dauert, die paar Sachen zu speichern, das ist doch mehr als egal?
hitstec Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 295



BeitragVerfasst: Do 02.01.03 18:41 
Nicht die Geschwindigkeit, sondern der Speicherverbrauch und das Handling sind mir ein Dorn im Auge.

:wink:
Brueggendiek
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 304

Win 98, Win98SE, Win XP Home
D5 Std
BeitragVerfasst: Do 02.01.03 18:42 
Hallo!

Alibi hat folgendes geschrieben:
"Die Registry will ich nicht benutzen - aus Performancegründen. "
Äh?
Also ob das nun 10ms oder 11ms dauert, die paar Sachen zu speichern, das ist doch mehr als egal?


Es geht doch nicht um das Speichern!

Windows lutscht sich die ganze Registry ins RAM - und je größer die Registry, desto langsamer wird das Gesamtsystem!

Ist leider eine unheilbare Win-Doof-Krankheit: Registry-Verfettung!
Leider ist jedoch Registry so bequem mit seiner Schlüsselverwaltung und wird deshalb gerne genommen (muß man viel weniger programmieren). Schießlich ist mein Super-Duper-Programm ja das einzige, was die Anwender installieren sollen :mrgreen:

Unser geliebtes Delphi macht da leider auch mit: meine D5 Standard legt z.B. die Eingabeaufzeichnungslisten (z.B. beim Suchen) in der Registry ab!!!

Gruß

Dietmar Brüggendiek
hitstec Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 295



BeitragVerfasst: Do 02.01.03 18:51 
Registry-Verfettung.

:lol:

Gute Formulierung. Treffender gehts gar nicht.
Alibi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 458

Win2K SP3
Delphi 6 Ent
BeitragVerfasst: Do 02.01.03 19:03 
Genau deshalb mein ich ja, unbedingt eine Option anbieten, die das Löschen dieser Einträge via 1-2 Clicks erledigt.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 02.01.03 19:14 
Alibi hat folgendes geschrieben:
Ne gute Lösung ist für Settingsdateien einfach den gleichen Ordner wie die Exe zu verwenden.

Nee, nicht wirklich. Dann benutzen wieder alle Anwender, die NIM starten, die selben Einstellungen. Wie gesagt: User A will Sound beim Ankommen von Nachrichten hören und aktiviert die Option, User B startet NIM dann und erschrickt, weil er die sch... Töne ausgestellt hatte ... :)

hitstec hat folgendes geschrieben:
Aber ich will in einer späteren version einem Netzwerkadministrator die Möglichkeit geben, NIM im Netz freizugeben und NIM auf den Clients bei Bedarf eben aus dieser Freigabe her zu starten.

Ja, und? NIM auf den Server, und Ordner freigeben. Die Settings werden dann lokal gespeichert, und wenn´s geht nur für den User, der das Programm benutzt.

Als Anregung "CSIDL_APPDATA" (mal im PSDK gucken, wie man diese Konstante benutzt, um den Pfad zu bekommen; Stichwort SHGetSpecialFolderLocation) entspricht unter 2000 und XP dem Ordner "Dokumente und Einstellungen/Benutzername/Anwendungsdaten". Darunter ließe sich IMHO problemlos ein NIM-Ordner für die CFG anlegen. Unter 98 gibt´s den Pfad meiner Meinung nach in zwei Formen: mit Benutzerprofilen unter "Profiles", ansonsten direkt im Windows-Ordner. Klappt also unter allen Win-Versionen. :)

Zitat:
sondern der Speicherverbrauch und das Handling sind mir ein Dorn im Auge.

Für die paar Einstellungen, die dein Programm bietet? :? Da finde ich die Verschlüsselung bzw. Komprimierung deiner aktuellen CFG-Datei schon etwas schlimmer (ausprobiert unter 98), weil ich nicht nachvollziehen kann, welche Daten gespeichert werden ...
hitstec Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 295



BeitragVerfasst: Do 02.01.03 19:52 
Zitat:
Ja, und? NIM auf den Server, und Ordner freigeben. Die Settings werden dann lokal gespeichert, und wenn´s geht nur für den User, der das Programm benutzt.

Genau das habe ich ja auch gemeint.

Zitat:
Als Anregung "CSIDL_APPDATA" ...

Gute Anregung, danke.
Hier der Code, wer's braucht.

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
function WinDir: String;
var arDir: array [0..MAX_PATH] of Char;
begin
  GetWindowsDirectory(arDir,MAX_PATH);
  Result:=StrPas(arDir);
  if Result[Length(Result)]<>'\' then Result:=Result+'\';
end;

function LocalAppDataDir: String;
var pidList: PItemIDList; pcPfad: PChar;
begin
  if SUCCEEDED(SHGetSpecialFolderLocation(0,$001a,pidList)) then begin
   pcPfad:=StrAlloc(MAX_PATH);
   SHGetPathFromIDList(pidList,pcPfad);
   Result:=pcPfad;
   if Result[Length(Result)]<>'\' then Result:=Result+'\';
  end else Result:=WinDir;
end;


Zitat:
Für die paar Einstellungen, die dein Programm bietet?

Ähm, ja. Bitte schaue es dir genau an.
In der CFG-File werden nicht nur alle Einstellungen, die man machen kann gespeichert, sondern alle internen Einstellungen wie Fensterpositionen und so weiter. Die ganze Benutzerverwaltung sowie alle Nachrichten werden darin gesichert. Also eine AllIn1-Lösung.
:wink:

Zitat:
Da finde ich die Verschlüsselung bzw. Komprimierung deiner aktuellen CFG-Datei schon etwas schlimmer (ausprobiert unter 9, weil ich nicht nachvollziehen kann, welche Daten gespeichert werden ...

Es ist eine Komprimierung, und die ist u.a. programmtechnisch notwendig.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 02.01.03 22:14 
Meine persönliche Meinung: darüber würde ich noch mal nachdenken! Ich würde Konfigurationsdaten und alles Persönliche (priv. Angaben, Nachrichten, usw.) voneinander trennen. Auf die Weise könnte z.B. Anwender A seine Konfiguration an Anwender B weitergeben ... ohne, dass dabei auch seine empfangenen Nachrichten mitgeliefert werden. :twisted:

Außerdem ließe sich dann auch ab und zu "aufräumen". Einfach die Datei mit den Nachrichten löschen oder anderweitig sichern, und das Programm ist wieder sauber.

Hier noch ein Vorschlag zum Code, um ihn allgemeiner zu gestalten:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
uses
  ShlObj;

function GetSpecialPath(PathID: integer): string;
var
  lpItemId : PItemIdList;
  buf      : array[0..MAX_PATH]of char;
begin
  Result := '';

  if(SHGetSpecialFolderLocation(0,PathId,lpItemId) = NOERROR) then
    if(SHGetPathFromIdList(lpItemId,buf)) then begin
      Result := string(buf);

      // auf Wunsch evtl. letzte Backslashes entfernen
      // muss nicht sein, und ist auch nur zur Sicherheit
      // (IMHO liefert die Funktion nie einen Namen mit
      // Backslash zurück; aber sicher ist sicher ...)
      while(Result[length(Result)] = '\') do
        SetLength(Result,length(Result)-1);
    end;
end;

Jetzt kannst du die Funktion vielseitiger nutzen, weil du ihr die CSIDL-Konstante einfach nur übergeben musst, etwa
ausblenden Quelltext
1:
2:
ShowMessage(GetSpecialPath(CSIDL_PERSONAL)); // "Eigene Dateien"
ShowMessage(GetSpecialPath(CSIDL_APPDATA)); // Anwendungsdaten

usw.

btw: Anstelle des "$001a" würde ich die Konstanten nehmen. Ich bezweifle, dass du in einem Jahr noch weißt, was die Nummer bedeutet. Es sei denn, du nutzt diese Nummer häufiger, dann merkst du dir ihre Bedeutung sicher ... :wink:
hitstec Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 295



BeitragVerfasst: Do 02.01.03 22:51 
Im Prinzip wäre eine Trennung sinnvoller.
Aber ich lass das mal so erstmal.
Fürs Aufräumen ist das Archiv da - dahin kann man nicht benötigte Nachrichten verschieben.
Ich will das Programm so kompakt wie möglich gestalten.

Die Konfigurationsweitergabe kann für den Admin vielleicht sinnvoll sein, aber so für den User? Naja vielleicht mache ich so eine Art Einstellungenimport/-export.
Mal schauen.

Zitat:
Es sei denn, du nutzt diese Nummer häufiger, dann merkst du dir ihre Bedeutung sicher ...

Für mich kein Problem.
8)
Aber trotzdem danke für den Code.
hitstec Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 295



BeitragVerfasst: Fr 03.01.03 02:11 
So nun.

Ich habe mal ne neue Version hochgeladen.
@MathiasSimmack: Kannst du es dir nochmal anschauen und auf einem System mit Benutzerrechten testen?

Änderungen:
- CFG-Files werden in einem benutzerabhängigen Ordner gespeichert
- PopUp-Menü Konfiguration für ein benutzerdefiniertes Menü
- Netzwerk-User-Liste BugFix
hitstec Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 295



BeitragVerfasst: Di 07.01.03 22:08 
Ok. Kann mal jemand auf seinem PC die "Externe Nachricht"-Funktion testen?

habe übrigens einen neue Version hochgeladen. Neu: konfigurierbare Sounds.
hitstec Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 295



BeitragVerfasst: So 26.01.03 00:30 
Scheint so, als wäre ich Alleinunterhalter hier.
:lol:

Ok. Neueste Funktion: NetAudio. Damit kann man sich im Netzwerk mit anderen Usern per Sprache unterhalten. Jaja, per Sprache. :wink:

Gibt es vielleicht ein kühnes selbstloses Geschöpf, das dieses Tool mal auf seinem technischen Wunderwerk austestet? Ich wäre sehr dankbar, wirklich sehr!

Changelog seit Beta 4:
NetAudio hinzugefügt
Silent-Status
Benutzer manuell löschen
Kleine Zeilen in der Postverwaltung
Speicherverwaltung optimiert
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: So 26.01.03 12:45 
Ich versuch das nachher vll mal wenn ich dazu komm. Aber das mit dem Alleinunterhalter kenn ich auch. Da fragt man nach, ob jmd an einer AutoUpdate-Software Interesse hätte. Dann kommen Vorschläge, schließlich stellt man ne Version hoch, baut nach und nach noch die Wünsche der Leute ein, aber dann meldet sich plötzlich keiner mehr :(

Gruß
hitstec Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 295



BeitragVerfasst: So 26.01.03 13:48 
Stimmt. Nur so nebenbei: bist du auch Zivi?
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: So 26.01.03 15:29 
Jo, Du auch?