|
| » myCSharp.de Diskussionsforum |
|
|
|
|
Autor
 |
|
WinniPuh
myCSharp.de-Mitglied
Dabei seit: 12.09.2006
Beiträge: 35
Entwicklungsumgebung: Visual Studio .NET 2008, xCode Herkunft: Hamlen
|
|
EDIT: siehe Letzten Beitrag
Hallo zusammen,
ich hoffe das sich nicht schon aus dem Titel eine unlösbare Aufgabe gebildet hat. :D
IST-Zustand:
Eine WindowsFormsApplication erstellt Statusdaten, die von einem WebPart im SharePoint ausgewertet und angeziegt werden.
SOLL-Zustand;
Für eine detailierte Ansicht, soll per Button_Click() im WebPart die WindowsFormsApplication mit einen Übergabe gestartet werden.
Ich habe es mit
C#-Code: |
System.Diagnostics.Process.Start(@"C:\Programme\WindowsFormsApplication.exe","ÜbergabeParameter")
|
versucht, aber das scheint nicht zu klappen.
Hat jemand eine Idee was ich falsch machen könnte?
gr.
Robert
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von WinniPuh am 30.07.2012 12:18.
|
|
22.06.2012 11:16
|
E-Mail |
Beiträge des Benutzers |
zu Buddylist hinzufügen
|
|
weismat
myCSharp.de-Mitglied
Dabei seit: 20.09.2005
Beiträge: 455
Entwicklungsumgebung: Vistual Studio 2010 Resharper Herkunft: Frankfurt am Main
|
|
Bekommst Du eine Exception?
Gibt es schon eine Instanz von WindowsFormsApplication.exe?
Unter welchem ser laeuft der Server und unter welchem User soll die WindowsFormsApplication.exe laufen?
|
|
22.06.2012 11:29
|
E-Mail |
Beiträge des Benutzers |
zu Buddylist hinzufügen
|
|
WinniPuh
myCSharp.de-Mitglied
Dabei seit: 12.09.2006
Beiträge: 35
Entwicklungsumgebung: Visual Studio .NET 2008, xCode Herkunft: Hamlen
Themenstarter
|
|
Vlt erkläre ich noch mal die vorgehensweise:
Ich sitze an meiner Workstation und greife mit dem Internet Explorer auf den Sharepoint zu ( http://sharepoint/SitePages/Homepage.aspx)
So hier habe ich dann meine Statusanzeige und einen Button.
Wenn ich auf den Button klicke soll sich das Programm öffnen was ich auf meiner Workstation befinden (lieg natürlich auf allen Workstation am selben Punkt)
Ich hoffe so ist es deutlicher was ich machen will :-/
gr.
Robert
|
|
22.06.2012 11:41
|
E-Mail |
Beiträge des Benutzers |
zu Buddylist hinzufügen
|
|
felix
myCSharp.de-Mitglied
Dabei seit: 30.07.2007
Beiträge: 151
Entwicklungsumgebung: Visual Studio 2010 Pro.
|
|
| Zitat von WinniPuh: |
Also ich habe das Ganze in einen Try{}catch{} block gepackt, aber bekomme keine ausnahme.
Das Prgramm was gestartet werden soll, liegt lokal auf jedem PC.
Und ich will das Programm vom SharePoint aus starten. Der User der das macht ist von daher nicht immer der selbe?!
Das ist mein erstes SharePoint projekt. Ich bin da noch nicht so betraut mit. |
Hallo,
verstehe ich dich richtig, dass du über ein SharePoint-WebPart eine Anwendung auf dem Client ausführen möchtest? Wenn ja, dann wird das - so wie du es probierst - nicht funktionieren können, da mit Process.Start() die Anwendung auf dem Server (auf dem der SharePoint läuft) gestartet wird und nicht auf dem Client.
Wenn die Anwendung auf dem Client läuft, gehst du ja über das SharePoint-Client-Objectmodell und demnach benutzt du SharePoint 2010.
Ab hier denke ich einfach mal laut ... alles ohne Gewähr
Wenn du dein Vorhaben dennoch realisieren möchtest, könnte man ja darüber nachdenken, die Anwendung dahingehend zu erweitern, dass sie mit einem bestimmten Protokoll umgehen kann ... nein, nicht Protokoll ... wie nennt man soetwas noch gleich ... ich meine das gleiche wie z.B. das Präfix "mailto:" in Hyperlinks, wodurch sich dein standard E-Mail Programm öffnet, nur eben mit einem von dir ausgedachten Namen.
Eben genau soetwas könntest du registrieren und Windows dann beibringen, dass beim Aufruf eines solchen Links deine Applikation gestartet wird. Wenn du es irgendwie hinbekommst, die URL mitzugeben und ggf. die ID eines bestimmten SPListItem-Objekts, oder was auch immer du in deinem Programm anzeigen möchtest, dann kannst du mittels Client-Objekt-Modell die entsprechenden SharePoint-Daten anzeigen ...
Ich hoffe, es ist einigermaßen klar, was ich meine.
Gruß,
felix
|
|
22.06.2012 15:32
|
E-Mail |
Beiträge des Benutzers |
zu Buddylist hinzufügen
|
|
WinniPuh
myCSharp.de-Mitglied
Dabei seit: 12.09.2006
Beiträge: 35
Entwicklungsumgebung: Visual Studio .NET 2008, xCode Herkunft: Hamlen
Themenstarter
|
|
Hey Felix,
erstmal danke für deine antwort, das schneit mir echt eine lösungsmöglichkeit zu sein. :)
| Zitat: |
| verstehe ich dich richtig, dass du über ein SharePoint-WebPart eine Anwendung auf dem Client ausführen möchtest? |
Ja ganz recht das habe ich vor
| Zitat: |
| Wenn ja, dann wird das - so wie du es probierst - nicht funktionieren können, da mit Process.Start() die Anwendung auf dem Server (auf dem der SharePoint läuft) gestartet wird und nicht auf dem Client. |
Das ist mir auch schon aufgefallen...ich hatte jedes mal einen haufen Processe auf dem Server laufen :(
| Zitat: |
| Wenn die Anwendung auf dem Client läuft, gehst du ja über das SharePoint-Client-Objectmodell und demnach benutzt du SharePoint 2010. |
Abgesehen davon das ich SharePoint 2010 nutze...Die Anwendung ist eine simple System.Windows.Forms Anwendung und hat keine dirkete Verbindung zum SharePoint.
Dafür habe ich das WebParts Projekt, was in dem SharePoint eingebunden ist.
| Zitat: |
Wenn du dein Vorhaben dennoch realisieren möchtest, könnte man ja darüber nachdenken, die Anwendung dahingehend zu erweitern, dass sie mit einem bestimmten Protokoll umgehen kann ... nein, nicht Protokoll ... wie nennt man soetwas noch gleich ... ich meine das gleiche wie z.B. das Präfix "mailto:" in Hyperlinks, wodurch sich dein standard E-Mail Programm öffnet, nur eben mit einem von dir ausgedachten Namen.
Eben genau soetwas könntest du registrieren und Windows dann beibringen, dass beim Aufruf eines solchen Links deine Applikation gestartet wird. Wenn du es irgendwie hinbekommst, die URL mitzugeben und ggf. die ID eines bestimmten SPListItem-Objekts, oder was auch immer du in deinem Programm anzeigen möchtest, dann kannst du mittels Client-Objekt-Modell die entsprechenden SharePoint-Daten anzeigen. |
Ok verstanden habe ich das glaube ich schon, aber ich wüsste jetzt was ich da wo machen müsste damit das geht. :-/
gr.
Robert
|
|
22.06.2012 15:56
|
E-Mail |
Beiträge des Benutzers |
zu Buddylist hinzufügen
|
|
felix
myCSharp.de-Mitglied
Dabei seit: 30.07.2007
Beiträge: 151
Entwicklungsumgebung: Visual Studio 2010 Pro.
|
|
| Zitat von WinniPuh: |
| Ok verstanden habe ich das glaube ich schon, aber ich wüsste jetzt was ich da wo machen müsste damit das geht. :-/ |
Ich auch nicht ;-)
Ich weiß aber, dass es hier im Forum ein Beispiel dazu gibt. Wenn ich es finde, dann poste ich es hier.
Mal abgesehen davon ...
Was genau soll denn eigentlich in der WindowsForms-Anwendung angezeigt werden? Kannst du die entsprechenden Daten nicht einfach im Web anzeigen?
|
|
22.06.2012 15:59
|
E-Mail |
Beiträge des Benutzers |
zu Buddylist hinzufügen
|
|
Abt
myCSharp.de-Team (Moderation)
Dabei seit: 20.07.2008
Beiträge: 3.404
Entwicklungsumgebung: VS2010, VS2012, ReSharper Herkunft: Stuttgart
|
|
Naja das sollte schon klar sein, dass man keinen Process von einer externen Website aus auf einem lokalen Rechner starten kann.
a) kennt die Applikation die Pfade gar nicht und b) wäre das das größte Sicherheitsloch auf Erden.
Ich weiß auch gar nicht, ob das noch Grundlagen oder einfach nur vernünftiges Nachdenken ist ;)
Wenn Du es nicht über eine Applikationsregistrierung innerhalb des Betriebssystems machen willst, zu dem es mehr als 1 Mio Treffer bei Google gibt (und sogar bei MSDN!!!! Registering an Application to a URL Protocol, gibt es auch noch andere Lösungen, wie zB einen Dienst zu schreiben, der mit dem Server kommuniziert.
Also ein bisschen Eigeninitiative solltest hier schon zeigen.
Was für Dich aber die beste Lösung sein wird; das musst Du selbst wissen. Das können und werden wir Dir nicht abnehmen.
|
|
22.06.2012 16:00
|
Beiträge des Benutzers |
zu Buddylist hinzufügen
|
|
WinniPuh
myCSharp.de-Mitglied
Dabei seit: 12.09.2006
Beiträge: 35
Entwicklungsumgebung: Visual Studio .NET 2008, xCode Herkunft: Hamlen
Themenstarter
|
|
| Zitat: |
Wenn Du es nicht über eine Applikationsregistrierung innerhalb des Betriebssystems machen willst, zu dem es mehr als 1 Mio Treffer bei Google gibt (und sogar bei MSDN!!!! Registering an Application to a URL Protocol, gibt es auch noch andere Lösungen, wie zB einen Dienst zu schreiben, der mit dem Server kommuniziert. |
Das Stichwort hat bis jetzt gefehlt.
| Zitat: |
| Also ein bisschen Eigeninitiative solltest hier schon zeigen. |
Wie gesagt ich bin in der Web-Programmierung noch ein neuling.
Ich brauchte nur einen Denkanstoß oder eine Richtung.
| Zitat: |
| Was für Dich aber die beste Lösung sein wird; das musst Du selbst wissen. Das können und werden wir Dir nicht abnehmen. |
Das hat auch keiner verlangt ;)
Ich wollte hier keinen fertig Code bekommen den ich nur noch einfügen brauche...
Danke für deinen Beitrag :)
Mal sehen was ich aus den Infos machen kann.
gr.
Robert
|
|
22.06.2012 16:44
|
E-Mail |
Beiträge des Benutzers |
zu Buddylist hinzufügen
|
|
felix
myCSharp.de-Mitglied
Dabei seit: 30.07.2007
Beiträge: 151
Entwicklungsumgebung: Visual Studio 2010 Pro.
|
|
Hallo WinniPuh,
ich habe das auch gerade getestet. Es funktioniert übrigens auch wunderbar innerhalb einer SharePoint-Liste. Du musst nur dafür sorgen, dass du in einer bestimmten Spalte den Hyperlink anbietest. Zusammensetzen kannst du den wunderbar mittels einer berechneten Spalte. Die Formel dazu könnte so aussehen:
="<a href='meinprotokoll://" & [ID] & "'>klick</a>"
Hierbei ist zu beachten, dass du den Datentyp der berechneten Spalte auf "Zahl (1 / 1,0 / 100)" setzt und NICHT auf "Eine Textzeile". Ansonsten wird der Link nämlich nur als Text dargestellt. Warum gerade Zahl kann ich dir nicht sagen, aber über diesen Workaround kannst du berechnete Hyperlinks erstellen.
Ich war gerade schon dabei mir ein Custom Field zu schreiben, aber wenn es auch mit Workaround geht, kann ich mir den Aufwand sparen :)
Gruß,
felix
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von felix am 25.06.2012 15:42.
|
|
25.06.2012 15:41
|
E-Mail |
Beiträge des Benutzers |
zu Buddylist hinzufügen
|
|
|
|