Gibt es da noch ne alternative zu oder muss ich das dann komplett selbst schreiben?
Wenn du mir dammit irgendwas sagen willst , dann tu das auch!
OK , ich hab grade gemerkt , dass das BrowserControl scheisse ist.
Ich hab auf meinemSystem den IE geblockt und kann nun in meinem
"Minibrowser" nicht mehr auf Buttons klicken (z.b. Google-Suche)
Was ist mit der Eigenschaft BrowserControl.ContextMenu-eigenschaft?
Ha , ich hab grade eine Ideallösung für das gnaze gefunden.
((OSForm)ParentForm).Layout += new LayoutEventHandler(Start_Layout);
main = new MainForm();
main.TopLevel = false;
main.FormClosed += new FormClosedEventHandler(main_FormClosed);
((OSForm)ParentForm).DesktopImage.Controls.Add(main);
((OSForm)ParentForm).DesktopImage.Controls.SetChildIndex(main, 0);
main.Show();
Funktioniert wunderbar und alles OHNE MDI !!
Moin,
weiss jemand wie man in einem BrowserControl die Dialoge ersetzen kann , die beim standartmäßig imlementierten ContextMenu aufgerufen werden , oder besser noch die Events des Menüs ersetzen?
Was auch sein könnte , wenn du die Form "automatisch" den Inhalt an die größe anpassen lässt (MyForm_Resize etc.) , dass das event eben in der DLL "anders" aufgerufen wird , als wenn sich die Form selbst darum kümmert
Moin,
ich habe ein Programm , das dynamisch Assemblys über eine Schnittstelle läd.
Eines dieser Assemblys legt eine Datei mit einem serialisierten Objekt ab.
Das klappt ganz gut , wenn das selbe Assembly nun aber versucht die Datei wieder zu deserialisieren gibt es eine Exception:
Assembly not found
obwohl es vorher ja geladen wurde , sonst könnte es ja diese Operation garnicht ausführen.
Wenn es sich um selbstdeklarierte Typen handelt , definer doch einfach eine Schnittstelle und leite dann davon die jeweiligen Typen ab.
Ein Umwandlung des Objektes ist was dir fehlt.
MyControl = (MyControl)sender;
List<Control> myControlList = new List<Control>();
foreach(MyEntry in MyDatabase /*Hier eben für jeden Eintrag ein neues Control erstellen*/)
{
MyControl c = new MyControl()
c.Attribut = myAttribut;
myControlList.Add(c);
}
MyForm.Controls.AddRange(myControlList.toArray());
Es handelt sich hierbei um ein weiteres Panel , so wie mehrere Buttons und selbstdefinierte UserControls (Siehe Anhang links oben , sollte alles klären) , hinter denen immer zahlreiche interne Operatione stehen.
Und nun möchte ich beispielsweise bei klick auf die WebAgent.exe das entsprechende Fenster öffnen , dieses aber nur innerhalb meiner Anwendung be und verarbeiten , sodass Windows dammit nichts zu tun hat (mdi eben).
@Khalid
Das mti dem Zeichnen bringt mir nichts , da ich dann eben diese Controls nicht habe.
Kann amn den MDI-Container nicht unsichtbar (Transparent) machen, aber dann hätte ich wieder das Problem , dass mein Panel keine eingaben Abfängt !?
Dann wird das Panel von dem Grauen MDI-Container verdeckt.
Nein , das kann irgendeine Datei sein , die mit dem Programm überhaupt nichts zu tun hat.
Ich ziehe von mir aus ein Bild in meine Ordnerstrucktur und verschiebe dieses dann eine Ebene weiter und dann ist auf einmal in der unteren Ebene der Zugriff gesperrt.
Sowohl als auch
Genau das ist ja das Problem an der Sache.
Moin,
Ich hab mich schon ein wenig hier im Forum umgeschaut , jedoch finde ich keine akzeptable lösung.
Ich habe ein MDI-Form. Da ich schon früher ausprobiert habe , ob man davon die Farbe ändern oder darauf Zeichnen kann (fehlanzeige) , wollte ich ein Panel in mein MDI-Form packen. Jetzt sind aber alle meine Childs hinter dem Panel und ich bin genau so schlau wie vorher.
Ich will aber dieses Panel , schon auch deshalb , weil es meine Basiselemente beherbergt. Kann mir da jemand einen Tip einen Lösungsansatz oder änhliches geben?
Werd ich versuchen , mommentan bin ich zwar anderweitig beschäftigt , aber ich werde euch meine Lösung posten.
Vielen Dank an alle.
Ich lade die Dinger wieder in eine Strucktur , intern als Icon-Objecte.
Es ist die SELBE Strucktur , wie wenn ich zu beginn die Registry auslese und mir die Icons hole.
Moin,
ich hab mal wieder ein ganz lustiges Problem:
Ich habe ein Programm , dass im laufe des Betriebes ordner
erstellt. In diese Ordner kopiert das Programm ordner und Dateien.
Ich kann daten löschen , ändern und kopieren , alles kein Problem , wenn ich jedoch eine per Drag and Drop (Windows Explorer) herausnehme und wieder hinein ziehe , oder eine Datei , die noch nicht in diesem Verzeichniss war hineinziehe (geht auch mit ordnern) dann ist diese Datei oder der Ordner dannach nicht mehr zugreifbar (für das komplette System). Es kommt immer wieder die Meldung Zugriff verweiger ... von Windows aus.
Ich frag mich , was das sein könnte , wenn weder ein Prozess darauf zugreift , noch ich irgendwas an den Dateirechten gemacht habe.
Moin,
hab mal ne Frage:
Ich hab ein Dictionary<string,FileType>, wobei Filetype eine Strucktur darstellt, ind er sich ein Icon befindet.
Wenn ich die Liste erzeuge , ist alles I.O. und die Icons werden wunderbar dargestellt , jedoch sobald ich die Liste Deserialisiere und abspeichere und diese dannach wieder ins Programm alde , sehen die Icons nach unterster Sole aus.
internal static void SaveSerialized(object obj,string file)
{
FileStream fs = new FileStream(file, FileMode.Create);
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(fs, obj);
fs.Close();
}
internal static object LoadSerealized(string file)
{
FileStream fs = new FileStream(file, FileMode.Open);
BinaryFormatter bf = new BinaryFormatter();
object o = bf.Deserialize(fs);
fs.Close();
return o;
}
Weiß jemand , woran das leigen könnte?
Moin,
wie im Titel villeicht schon gesehen , verwende ich FlowLayoutPanel mit Autoscroll auf true und bin dammit bis jetzt auch sehr zufireden.
Ich weise dem Panel (per Controls.Add(...)) Elemente zu , die den Dateien und Ordnern in einem bestimmten Pfad entsprechen (Explorer-View).
Habe ich jetzt z.b. bei C:\ bin und dort etwa soviel Elemente habe , wie mein Panel groß ist , wird keine Scrollbar angezeigt, doch sobald ich das Fenster minimiere und dannach wieder auf normale Größe "zurechtrücke" , wird mir plötzlich ein langer Scrollbalken angezeigt , obwohl sich bei meinen Elementen nichts geändert hat.
Wenn ich jetzt einen Resize durchführe (einfach mal ein paar Pixel am fenster ziehe und wieder zurückschiebe) verschwindet der Scrollbalken auf einmal wieder.
Hat eventuell jemand eine Idee , woran das liegen könnte und wie man das beheben kann?
Probier ich aus , sobald es fertig ist.
So , ich hab jetzt mal in der Systemverwaltung nachgeschaut und dort unter WMI folgendes gefunden:
Der RPC-Server ist nicht verfügbar. Ist wohl ein massiges Windows-Problem , auf das ich hier nicht eingehen kann. (Fast ganz google ist voll mit Forenbeiträgen zu dem Thema).
Tja , schade.
Und dammit riskieren meinen Rechner neu aufsetzen zu müssen?
OK , nach langem rumwerkeln bekomme ich nun den Fehlercode des ganzen , kann aber trotzdem dammit nicht viel anfangen(Fast 2 Stunden gegoogelt!).
"System.Runtime.InteropServices.COMException" wurde aufgefangen.
Message=""
Source="WinMgmt"
ErrorCode=-2147023174
StackTrace:
bei System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo)
bei System.Management.ManagementObjectCollection.ManagementObjectEnumerator.MoveNext()
bei UExplorerWindow.Win32API.WMI.GetListOfFileSharesOnLocalMachine() in L:\Programme\UExplorer\UExplorerWindow\Win32API\WMI.cs:Zeile 99.
Kann dammit villeicht jemand was anfangen?
Was ist dammit? Müsste das dammit nicht gehen , wenn ich den Pfad auf meinen Pfad abändern würde?
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Shell]
"URL Protocol"=""
[HKEY_CLASSES_ROOT\Shell\shell]
[HKEY_CLASSES_ROOT\Shell\shell\explore]
[HKEY_CLASSES_ROOT\Shell\shell\explore\command]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
00,5c,00,45,00,78,00,70,00,6c,00,6f,00,72,00,65,00,72,00,2e,00,65,00,78,00,\
65,00,20,00,2f,00,65,00,2c,00,2f,00,69,00,64,00,6c,00,69,00,73,00,74,00,2c,\
00,25,00,49,00,2c,00,25,00,4c,00,00,00
[HKEY_CLASSES_ROOT\Shell\shell\explore\ddeexec]
@="[ExploreFolder(\"%l\", %I, %S)]"
"NoActivateHandler"=""
[HKEY_CLASSES_ROOT\Shell\shell\explore\ddeexec\application]
@="Folders"
[HKEY_CLASSES_ROOT\Shell\shell\explore\ddeexec\ifexec]
@="[]"
[HKEY_CLASSES_ROOT\Shell\shell\explore\ddeexec\topic]
@="AppProperties"
[HKEY_CLASSES_ROOT\Shell\shell\open]
[HKEY_CLASSES_ROOT\Shell\shell\open\command]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
00,5c,00,45,00,78,00,70,00,6c,00,6f,00,72,00,65,00,72,00,2e,00,65,00,78,00,\
65,00,20,00,2f,00,69,00,64,00,6c,00,69,00,73,00,74,00,2c,00,25,00,49,00,2c,\
00,25,00,4c,00,00,00
[HKEY_CLASSES_ROOT\Shell\shell\open\ddeexec]
@="[ViewFolder(\"%l\", %I, %S)]"
"NoActivateHandler"=""
[HKEY_CLASSES_ROOT\Shell\shell\open\ddeexec\application]
@="Folders"
[HKEY_CLASSES_ROOT\Shell\shell\open\ddeexec\ifexec]
@="[]"
[HKEY_CLASSES_ROOT\Shell\shell\open\ddeexec\topic]
@="AppProperties"
Oder muss ich dann trotzdem den Desktop übernehmen :evil:?
Also heisst das , dass mein Explorer der Desktop sein muss?
Moin ,
ich hab mal diesen Code hier ausprobiert
private static List<string> GetListOfFileSharesOnLocalMachine()
{
List<string> listOfFileSharesOnLocalMachine = new List<string>();
try
{
WqlObjectQuery query = new WqlObjectQuery("SELECT * FROM Win32_Share");
ManagementObjectSearcher find = new ManagementObjectSearcher(query);
foreach (ManagementObject mo in find.Get())
{
listOfFileSharesOnLocalMachine.Add((string)mo["Name"]);
mo.Delete();
}
}
catch (Exception e)
{}
for (int i = 0; i < listOfFileSharesOnLocalMachine.Count;i++)
if (listOfFileSharesOnLocalMachine[i].IndexOf('$') != -1)
{
listOfFileSharesOnLocalMachine.RemoveAt(i);
i--;
}
else
if(listOfFileSharesOnLocalMachine[i].IndexOf('\\') == -1)
{
listOfFileSharesOnLocalMachine[i] += "\\";
}
return listOfFileSharesOnLocalMachine;
}
Der funktioniert auf meinem Firmenrechner ganz gut , aber wenn ich den auf meinem Homerechner laufen lasse , krieg ich eine Undefinierte Com-Exception.
Mein Firmenrechner hat nur einen passwortlosen Benutzer und ist auch nicht in irgendeiner Domäne oder anders von irgendwas abhängig.
Mein Homerechner hat zwei passwortgeschützte Benutzer und ist ebenfalls in keiner Domäne.
Beide Rechner haben XP und .NET 2.0 und alle Benutzer sind Administratoren.
Kann das eventuell an dem Passwort liegen? Wenn ja , wie kann ich den Zugriff auf WMI Accessen?
Weiss jemand was da genau noch fehlt (ergänzt , anders gemacht werden muss) oder warum das Trotzdem nicht geht?
Helft mir ein Wenig auf die sprünge:
Der Explorer ist z.b. auch der Desktop aber die Shell macht was?
Moin,
ich bin grad dabei meinen eigenen Explorer zu bauen und wollte nun diesen als Standartexplorer verwenden. Nun meine frage , wie kann ich mit C# (warscheinlich der WinAPI) die Windows-Ereignisse zu einem Programmstarte abfangen , sodass das Programm (bsp. der Explorer deim Doppelklick auf ein Ordnersymbol) nicht erst geöffnet bzw. geschlossen wird und mein Programm dann stattdessen, mit selben Parametern aufgerufen wird?
Gibt es für Windows-Ereignisse (Programmstart) eine API-Funktion?
Moin,
gibt es eine möglichkeit aus einem ImageArray eine Videosequenz zu erzeugen und diese als Video-Datei zu speichern?
Was für eine IP (oder Hostname) muss ich denn dann an den Client übergeben , wenn ich den Server auf meinem Rechner laufen habe oder wie mach ich dem klar , dass ich nicht im lokalen Netzwerk suche?
Moin,
mal wieder eine Netzwerkfrage. Kann ich über ein TCPClient-TCPServer-System auch daten über das Internett zum jeweiligen gegenstück senden?
Da ich meinen Server auf Sicherheit getrimmt habe , hab ich das ganze jetzt wie folgt gelöst:
Ich hab erstmal eine neue variable eingebaut , die der Anwender (ist ne dll) dann auf true setzen kann. Ist dies der Fall , zeigt dies an , dass jemand (oder etwas) eine Bytefolge senden möchte. Die nächste übermittlung des gegenübers wird dann nicht verarbeitet , sondern als Bytestrom an den Anwender übergeben , der dann dammit machen kann , was ihm grade passt. Dannach wird diese variable dann wieder auf false gesetzt.
(z.b. Der Client frag den Server , ob er eine Datei senden darf. Der Server erteilt die Erlaubniss und teilt das dem client mit , der anfängt zu senden. Der Server entzieht dannach wieder die Erlaubniss. Diese Prozedur wird dann solange wiederholt , bis alle Teile der Datei übermittelt wurden.)
Ich werde aber die Tage noch mal eine Schnittstelle für Protokoll-Assemblys einbauen und ein paar Protokolle einbinden.
Das Problem bei der ganzen Sache ist allerdings , dass sich darin nicht nur die eigentlichen Daten befinden , sondern auch noch jede Menge Informationen für den Server , die ich nicht so einfach in ein byte-Array packen kann.
Moin , ich versuche grad über meinen Client Dateien an den Server zu senden.
Dies stellt kein Problem dar , wenn ich nun aber aus dem empfangsstring nun wieder eine Datei machen soll , wird diese zwar hergestellt , entspricht aber nicht mehr der ursprünglichen Datei. (zu klein , keine bildinformationen , nicht mehr ausführbar etc.)
Ich habe nun von dem deserialisieren dieser Dateien gehört. Meine Frage , ich habe weder ein Objekt (ist halt eine Datei) , noch kann ich die deserialisierung über den Filestream starten , da ich dort immer eine Exception (der Strom enthält falsche Bytes) erhalte. Wie kann ich nun meine Datei über den Sendestring verschicken und dann wieder auf der anderen Seite vernünftig (und wie im ursprung) ausgeben lassen?
Moin,
auch wenn das auf den ersten Blick nicht so aussieht , aber das hat es bestimmt in sich.
Ich habe kürzlich die System.CodeDom.Compiler.ICodeCompiler schnittstelle entdeckt.
Das Compilieren von Code aus meinem Programm heraus wird bestimmt klappen (habs noch nicth getestet) aber jetzt möchte ich gerne wissen , wie ich dem Compiler denn dann sage , dass er z.b. wie in VisualStudio , ressourcen oder verweise mit übernehmen soll?
Und kann man überhaupt aus einem laufenden Programm heraus diesen Compiler von .NET aufrufen ( denk ich doch oder wie macht VS das sonst)
Das Form nimmt keine Notiz von der Schnittstelle , die ist für das AddIn gedacht , dass dann wiederum auf die erreignisse vom Form reagiert , z.b. MouseMove etc.
Moin,
ich hab schon das Forum durchforstet und habe keine Antwort auf meine Frage gefunden.
Ich habe eine schnittstelle definiert.
Nun habe ich versucht aus dem Main-Programm heraus auf die events dieser Schnittstelle zuzugreifen.
Meinedll.MaineSchnittstelle.meineEventschnittstelle.mainevent.Invoke();
Klappt aber nicht , und wenn ich versuche das ganze über
Mainedll.MainEventhandler.mainevent = Meinedll.MaineSchnittstelle.meineEventschnittstelle.mainevent;
mainevent.Invoke();
klappt zwar das Invoke() aber ich bekomme den fehler , dass Meinedll.MaineSchnittstelle.meineEventschnittstelle.mainevent nur links stehen darf.
Wie kann ich es machen , dass ich über meine Schnittstelle , die ich extern ausgelagert habe , an andere PlugIns , die diese Verwenden events schiessen kann?
Das Problem bei der ganzen Sache ist nur , dass da dann zu 90% immer 80% ausschuss ist und die restlichen 20% nicht diese Frage klären.
Moin,
wie kann ich es erreichen , wenn meine Anwendung (eine EXE) einmal fertig ist , dass andere Nutzer dafür 'AddIns' schreiben können , ohne meinen Code benutzen zu müssen.
Moin,
kann man Meshes zu einem Mesh zusammen"addieren" ?
Bevor ihr jetzt sagt , das wurde aber alles schonmal abgehandelt , bitte erst lesen. Danke!
Ich hab ein VSTO-AddIn für Outlook und Word (sind 2) geschrieben.
Auf meinem Entwicklungsrechner klappt alles.
Allerdings wie es so üblich ist , lassen sich diese beiden AddIns
nicht auf dem Anwenderechner starten.
"Nicht geladen. Beim Start ist ein Laufzeitfehler aufgetreten." lässt sich dann unter
AddIns im Menü finden.
Die Registrierung stimmt , die DLLs sind vom Code her Fehlerfrei.
Jetzt hab ich gelesen , dass es sich um eine Zugriffseinschränkung beim .NET Framework selbst gibt. Ich habe diese Datei geschrieben:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\caspol -pp off
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\caspol -machine -addgroup 1 -strong -file "C:\Programme\Microsoft Office\EmailAuthor\EmailShortcuts.dll" -noname -noversion FullTrust -n "EmailAuthor_Outlook2007" -description "Ein Programm zur verwaltung eind einbindung von Textbausteinen in Outlook2007."
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\caspol -pp on
Wie es bei Microsoft gestanden hat und diesen zu einer Batch-Datei umgearbeitet.
Würde das denn so funktionieren?
Das ist schon so recht wirksam , dass garantiert mir eine permanente Aktualität des Gerenderten , da sich die Geschwindigkeit an die FPS-Rate des Rechners anpasst.
(Bei mir zwischen 260 und 560)
Ich denke ich belibe doch bei meiner Lösung , da brauch ich dann nicht wieder in meinem Quellcode rumpfuschen. Trotzdem danke.
Ne , klappt nicht , dann flackert das DirectX-device ebenfalls mit.
So intelligent das zu probieren war ich ja auch schon.
Ich hab ne andere Lösung gefunden. Ich hab ein neues Form erstellt und als TopMost definiert , dannach habe ich es genau über meiner Rendering-Form angeordnet und als TransparenceKey die Farbe des Hintergrundes dieser Form definiert.Wenn ich nun auf diesem Form zeichne , was Flackerfrei funktioniert , da hier der DoubleBuffer wieder verwendet werden kann , wird das Image auf dem Transparenten Frame dargestellt und unter diesem wird auf meinem DX-Frame gerendert.
Klappt wunderbar und vor allem flüssig.
Ich gebe zu , dass es nicht die beste Lösung ist , aber durchaus eine funktionale.
Trotzdem danke an alle , die hier helfen wollten.
Moin,
wie kann ich trotz DirectX auf dasselbe Fenster zusätzlich mit der GDI zeichnen , ich baue nämlich ein Spiel und das wäre für die Minimap ganz genial , wenn ich diese als Image per DrawImage(...) auf das Device setzen könnte.
Ich Render in der Methode
protected ovveride onPaint(object sender,PaintEventArgs e)
{
Render(); //Render-Methode von DirectX
Draw(e); //Meine Methode für zeichen Operationen
this.Invalidate();
}
Nun ist es aber so , dass ich , wenn ich einfach e.Graphics.DrawImage(Image.FromFile(...),0,0);
aufrufe , das Image auf dem Fenster flackert wie ein Feuer in nem Kamin.
Wie kann ich das ganze Flackerfrei zeichnen?