Hallo zaimen,
wir brauchen schon ein paar mehr Informationen um dir zu helfen.
Ein Anfang wäre auch schon mal die Version des Sharepoint. (2010 oder 2013, Foundation oder Enterprise...)
VS Express wird dir glaube ich nicht weiter helfen. Du solltest mindestens die Professional-Version auf der selben Maschine wie den Sharepoint installiert haben.
Gruß El Zorro
Hallo Lancester,
da brauchen wir aber ein paar mehr Infos von dir. Was meinst du damit, dass du alle Daten in einem Objekt abspeicherst. Was ist das für ein Objekt? (Datentyp object?) Hast du eine eigene Klasse geschrieben?
Gruß el Zorro.
[…]Wenn eine Projektmappe Projektmappenordner enthält, können der Projektmappe oder einem Projektmappenordner Projektmappenelemente hinzugefügt werden.Alle Projektmappenelemente, die Sie der Projektmappe hinzufügen, werden in den Ordner Projektmappenelemente eingefügt.Wenn Sie einem Projektmappenordner ein Projektmappenelement hinzufügen, befindet sich das Element im Projektmappenordner des Projektmappen-Explorers; im Projektmappenordner wird kein Ordner Projektmappenelemente erstellt.[…]
Und alles klar?
aus: Projektmappenordner
Hallo,
ich habe vor einiger Zeit damet gearbeitet:
http://www.dimastr.com/redemption/home.htm
Gruß
El Zorro
<DataGridTemplateColumn Header="Farbe">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Rectangle Fill="{Binding Path=VertragsgebietFarbe}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<Popup AllowDrop="False" StaysOpen="True" IsOpen="True">
<my:ColorPicker HorizontalAlignment="Left" Margin="133,136,0,0" Name="colorPicker1" VerticalAlignment="Top" />
</Popup>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
Falls jemand mal danach sucht.
Danke. Das klingt logisch und vielversprechend. 👍
Hallo
die Anwendung kannst du mit
Shell "C:/Dateipfad/prog.exe Parameterliste"
aufrufen.
Du kannst auch innerhalb von VBA die returnwerte des Programms abrufen.
Das alles gehört aber nicht in dieses Forum, da das VBA-spezifische Fragen sind. X(
El Zorro
Hallo zusammen,
folgendes:
Ich habe eine DataGrid mit mehreren Spalten. In einer der Spalten wird eine Farbe angezeigt. Ich möchte jetzt eine Möglichkeit schaffen diese Farbe mit einer Art ColorPicker (UserControl existiert) zu ändern. Ich möchte diesen ColorPicker aber nicht innerhalb der Cell darstellen, sondern in einem darüber gelagerten Canvas oder Panel.
Hat jemand von euch dazu eine Idee, oder zumindest ein paar Suchbegriffe für google.
Vielen Dank
El Zorro
Hallo nochmal,
vielleicht ist so etwas ja auch mit F# möglich. Da fehlen mir aber die Kenntnisse.
Gruß
El Zorro
Hallo Oliver,
hast du dich schon mal mit R beschäftigt? Schau dir mal folgenden link an:
http://www.codeproject.com/Articles/25819/The-R-Statistical-Language-and-C-NET-Foundations
Ist jetzt zwar kein Beispiel für die Regression 4. Grades, aber R bietet die Möglichkeit statistischer Berechnungen.
Gruß
El Zorro
Hallo,
ich kann in dem Fall auch nur iTextSharp wärmstens empfehlen. Es gibt auch jede Menge Beispiele dazu. Allerdings in Java aber die Adaption auf C# ist sehr problemlos.
http://itextpdf.com/
http://itextpdf.com/book/examples.php
Gruß El Zorro
Hallo SirSydom,
ich habe recht erfolgreich iTextSharp eingesetzt. die Library ist auch sehr gut dokumentiert. Ob jetzt dein spezielles Problem damit behoben werden kann, kann ich nicht sagen Aber ein versuch ist es wert. 😃
Gruß El Zorro
PS: chinesische Zeichen scheinen zu funktionieren iText in Action - book cover
iText in Action 2nd Edition: Choosing the right font
Hallo,
erstelle dir doch in deinem Outlook eine Testaufgabe mit einem solchen Hyperlink und schreibe dir in dein Programm eine Funktion, die den bodytext dieser Testaufgabe ausgibt.
Auf diese Weise erhälst du alle benötigten Informationen und kannst später weitere Fragestellungen beantworten.
Gruß El Zorro
Stimmt!!
Dann könnte man ja auch einfach mit einer Listbox arbeiten und umgeht den ganzen Frust mit dem HierarchicalDataTemplate.
OK warum einfach wenn es auch kompliziert geht. 😉
Hallo zusammen,
ich habe das Problem gelöst. Die Liste, die ich als DataGrid darstellen wollte musste noch einmal in einer Liste gewrappt werden, damit sie als ItemsSource im DataTemplate gebunden werden kann.
Vielen Dank an MrSparkle.
Hier der Programmcode:
using System;
using System.Collections.Generic;
using System.ComponentModel;
namespace GrafikKomTest
{
public class KEZ
{
private int _kezNummer;
private string _kezText;
private IEnumerable<GrafikKomList> _listGrafikKom;
public int KEZNummer
{
get { return _kezNummer; }
set { _kezNummer = value; }
}
public string KEZText
{
get { return _kezText; }
set { _kezText = value; }
}
public IEnumerable<GrafikKomList> ListGrafikKom
{
get { return _listGrafikKom; }
set { _listGrafikKom = value; }
}
}
public class GrafikKomList
{
private IEnumerable<GrafikKom> _wrappedList;
public IEnumerable<GrafikKom> WrappedList
{
get { return _wrappedList; }
set { _wrappedList = value; }
}
}
public class GrafikKom
{
private int _zeile;
private string _kommentar;
public string Kommentar
{
get { return _kommentar; }
set { _kommentar = value; }
}
public int Zeile
{
get { return _zeile; }
set { _zeile = value; }
}
}
}
<Window x:Class="GrafikKomTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:GrafikKomTest"
xmlns:Generic="clr-namespace:System.Collections.Generic;assembly=mscorlib" Title="MainWindow" Height="451" Width="1303">
<Window.Resources>
</Window.Resources>
<Grid>
<TreeView ItemsSource="{Binding}" Height="354" HorizontalAlignment="Left" Margin="66,36,0,0" Name="treeView1" VerticalAlignment="Top" Width="452">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type local:KEZ}"
ItemsSource="{Binding Path=ListGrafikKom}">
<TextBlock Text="{Binding KEZText}"/>
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type local:GrafikKomList}">
<StackPanel>
<DataGrid ItemsSource="{Binding WrappedList}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Kommentar" Binding="{Binding Kommentar}"/>
</DataGrid.Columns>
</DataGrid>
</StackPanel>
</DataTemplate>
</TreeView.Resources>
</TreeView>
</Grid>
</Window>
Und so siehts aus:
Hi MrSparkle,
das könnte ich natürlich tun. Aber dann wird mir das DataGrid ja auf der ersten Ebene mit angezeigt. Ich möchte das DataGrid auf der 2. Ebene, so dass es nur bei Bedarf "ausgeklappt" wird. 😃
Gruß
El Zorro
Hallo MrSparkle,
deinen Vorschlag hatte ich auch schon in Betracht gezogen. Das Problem dabei ist, dass ich dann für jeden Eintrag in der Liste ein eigenes DataGrid erhalte. (siehe Anhang).
Aus diesem Grund habe ich ja die eigene Klasse als Wrapper dazwischen geschoben.
Gruß
El Zorro
Hallo zusammen,
ich habe folgendes Problem:
Ich möchte folgende Datenstruktur in einem Treeview darstellen. Dem TreeView wird als DataContext eine List<KEZ> übergeben. Dabei sollen die TreeViewItems der 2. Stufe (List<GrafikKom> gewrapped in einer eigenen Klasse) als DataGrid angezeigt werden.
using System;
using System.Collections.Generic;
using System.ComponentModel;
namespace GrafikKomTest
{
public class GrafikKom : INotifyPropertyChanged
{
private int _zeile;
private string _kommentar;
public string Kommentar
{
get { return _kommentar; }
set { _kommentar = value; Changed("Kommentar"); }
}
public int Zeile
{
get { return _zeile; }
set { _zeile = value; Changed("Zeile"); }
}
public GrafikKom(int zeile,string kommentar)
{
Zeile = zeile;
Kommentar = kommentar;
}
public event PropertyChangedEventHandler PropertyChanged;
private void Changed(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
public class GrafikKomList
{
private List<GrafikKom> _wrappedList;
public List<GrafikKom> WrappedList
{
get { return _wrappedList; }
set { _wrappedList = value; }
}
public GrafikKomList(List<GrafikKom> grafiKKomList)
{
_wrappedList = grafiKKomList;
}
}
public class KEZ
{
private int _kezNummer;
private string _kezText;
private GrafikKomList _listGrafikKom;
public int KEZNummer
{
get { return _kezNummer; }
set { _kezNummer = value; }
}
public string KEZText
{
get { return _kezText; }
set { _kezText = value; }
}
public GrafikKomList ListGrafikKom
{
get { return _listGrafikKom; }
set { _listGrafikKom = value; }
}
public KEZ(int nummer, string text, GrafikKomList listGrafikKom)
{
_kezNummer = nummer;
_kezText = text;
_listGrafikKom = listGrafikKom;
}
}
}
Mein XAML dafür sieht so aus:
<Window x:Class="GrafikKomTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:GrafikKomTest"
xmlns:Generic="clr-namespace:System.Collections.Generic;assembly=mscorlib" Title="MainWindow" Height="451" Width="525">
<Window.Resources>
<DataTemplate DataType="{x:Type local:GrafikKomList}" x:Key="dataGridKommentare">
<DataGrid ItemsSource="{Binding WrappedList}">
<DataGrid.Columns>
<DataGridTextColumn Header="Kommentar" Binding="{Binding Kommentar}"/>
</DataGrid.Columns>
</DataGrid>
</DataTemplate>
<HierarchicalDataTemplate x:Key="MasterTempl" DataType="{x:Type local:KEZ}" ItemsSource="{Binding ListGrafikKom}" ItemTemplate="{StaticResource dataGridKommentare}">
<TextBlock Text="{Binding KEZText}"/>
</HierarchicalDataTemplate>
</Window.Resources>
<Grid>
<TreeView Margin="12,46,12,12" Name="treeView1" ItemsSource="{Binding}" ItemTemplate="{StaticResource MasterTempl}"/>
</Grid>
</Window>
Leider werden keine Elemente der 2. Stufe angezeigt. Woran könnte das liegen.
Vielen Dank.
El Zorro
Hallo,
es gibt zu dem Thema ein tolles Buch von Jack Xu. "Practical WPF Charts and Graphics" aus dem Apress- Verlag.
Gruß
El Zorro
Ich hab das mal kurz nachgebaut. (Siehe Anhang)
BTW das ist ein klassisches Beispiel wo Normalisierung Sinn macht. Dann muss man sich bei den Abfragen nicht so verbiegen. 😉
Gruß EL Zorro
Hallo nochmal,
ich hab deine Frage noch einmal durchgelesen und dein Problem jetzt verstanden. Du musst in deiner SQL-Abfrage einen Join auf die gleiche Tabelle einbauen und als Schlüsselpaar diRechnerNR benutzen.
Gruß El Zorro
Hallo Sgrab,
mir ist noch nicht ganz klar, wo der Computername herkommt.
Jetzt soll aber zusätzlich die Spalte "Computername" hinzugefügt werden. Der Druckername befindet sich auch in "strBezeich", es soll dann so aussehen.
Du meinst wahrscheinlich, dass Computername und Druckername in der Spalte strBzeich in folgender Form stehen:
Computername\Druckername
Wenn das so ist, kannst du doch den Computernamen schon in deinem SQL-Befehl auslesen.
Viele Grüße El Zorro
Hallo zusammen,
nur mal so als Frage. Warum ist die Übergabe als Konstruktor-Argument die "bessere" Lösung gegenüber einer Singleton-Variante?
Gruß El Zorro
Hallo zusammen.
Problem gelöst. Nach langem Suchen und Vergleich der Quell und Zieldatei hab ich festgestellt, dass die Zieldatei genau um ein Byte kleiner war als die Quelldatei.
Eine Veränderung der Zeile
fs1.Write(byteData, 0,ArraySize);
in
fs1.Write(byteData, 0,ArraySize+1);
behob das Problem.
Spannend nur, dass das Beispiel aus offiziellen Oracle-Quellen stammte.
verwendetes Datenbanksystem: ORACLE 11g
Hallo zusammen.
ich speichere eine Excel 2007 Datei als BLOB in eine ORACLE 11g DB. Wenn ich das BLOB wieder auslese und eine neue Exceldatei daraus generiere bekomme ich beim Öffnen der Datei folgenden Fehler bzw. Hinweis:
"Von Excel wurde unlesbarer Inhalt in Mappe2.xlsx gefunden. Möchten Sie den Inhalt dieser Arbeitsmappe wieder herstellen?" Ja/Nein
Ein Klick auf Ja stellt die Arbeitsmappe auch wieder her und das Ergebnis sieht auch richtig und vollständig aus. Aber unschön ist die ganze Sache schon.
Was könnte man anders machen?
Hier der Quelltext:
//Step 1
// Connect to database
// Note: Modify User Id, Password,
// Data Source as per your database setup
string constr = "User Id=...;Password=...;Data Source=...";
OracleConnection con = new OracleConnection(constr);
con.Open();
Console.WriteLine("Connected to database");
// Step 2
// Note: Modify the Source and Destination location
// of the image as per your machine settings
String SourceLoc = @"C:\Temp\Mappe1.xlsx";
String DestinationLoc = @"C:\Temp\Mappe2.xlsx";
// providing read access to the file
FileStream fs = new FileStream(SourceLoc, FileMode.Open,FileAccess.Read);
// Create a byte array of file stream length
byte[] ImageData = new byte[fs.Length];
//Read block of bytes from stream into the byte array
fs.Read(ImageData,0,System.Convert.ToInt32(fs.Length));
//Close the File Stream
fs.Close();
// Step 3
// Creating Anonymous PL/SQL block string
String block = " BEGIN " +
" INSERT INTO TB_S_QSR_STRG_FKT_TAB_S_B (QSR_VERSION_ID,XLS_FILE) values (100,:1); " +
" SELECT XLS_FILE into :2 from TB_S_QSR_STRG_FKT_TAB_S_B WHERE QSR_VERSION_ID = 100; " +
" END; ";
// Set command to create Anonymous PL/SQL Block
OracleCommand cmd = new OracleCommand();
cmd.CommandText = block;
cmd.Connection = con;
//Since executing an anonymous PL/SQL block, setting the command type ' as Text
//instead of StoredProcedure
cmd.CommandType = CommandType.Text;
// Step 4
// Setting Oracle parameters
// Bind the parameter as OracleDbType.Blob to command for inserting image
OracleParameter param = cmd.Parameters.Add("blobtodb", OracleDbType.Blob);
param.Direction = ParameterDirection.Input;
// Assigning Byte Array to Oracle Parameter
param.Value = ImageData;
// Bind the parameter as OracleDbType.Blob to command for retrieving the image
OracleParameter param2 = cmd.Parameters.Add("blobfromdb", OracleDbType.Blob);
param2.Direction = ParameterDirection.Output;
try
{
// Step 5
// Execute the Anonymous PL/SQL Block
// The anonymous PL/SQL block inserts the image to the
// database and then retrieves the images as an output parameter
cmd.ExecuteNonQuery();
Console.WriteLine("Image file inserted to database from " + SourceLoc);
// Step 6
// Save the retrieved image to the DestinationLoc in the file system
// Create a byte array
byte[] byteData = new byte[0];
// fetch the value of Oracle parameter into the byte array
byteData = (byte[])((OracleBlob)(cmd.Parameters[1].Value)).Value;
// get the length of the byte array
int ArraySize = new int();
ArraySize = byteData.GetUpperBound(0);
// Write the Blob data fetched from database to the filesystem at the destination location
FileStream fs1 = new FileStream(@DestinationLoc, FileMode.OpenOrCreate, FileAccess.Write);
fs1.Write(byteData, 0,ArraySize);
fs1.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
cmd.Dispose();
con.Close();
con.Dispose();
}
}
Hallo zusammen,
ich habe ein Grid mit zwei Spalten und einen Gridsplitter in der ersten Spalte.
In den Eigenschaften ist als Cursor der standardmäßige SizeWE eingestellt.
In der Anwendung wird bei einem MouseOver aber nach wie vor der Standard-Arrow gezeigt.
Jemand eine Idee?
Ich nutze .Net 4.0 und VS 2010 Prof.
Danke
el Zorro
Danke. Werd ich mal versuchen.
Hallo zusammen,
ich habe ein DataSet mit drei Tabellen (User, Artikelgruppe, Artikel) und zwei DataRelationen (User->Artikel, Artikelgruppe->Artikel).
Auf meiner WPF-Oberfläche habe ich nun zwei ComboBoxen (per DataBinding an User und Artikelgruppe gebunden).
Ziel ist es nun eine Listbox mit Artikeln so zu füllen, dass man nur die Artikel angezeigt bekommt, die zum ausgewählten User und der gewählten Artikelgruppe passen.
Ist sowas möglich?
Hallo zusammen,
mich interessiert, ob es eine Möglichkeit gibt das Löschen einer Datei vor dem Löschvorgang abzubrechen. Ziel ist ein Windowsdienst, der einen Papierkorb darstellt, sprich die Datei nicht löscht, sondern in einen definierten Ordner an anderer Stelle kopiert.
Der Dienst soll dann auf einem Server laufen, dessen Ordner als Netzlaufwerke auf den Workstations des Netzwerkes eingehangen sind.
Falls jemand soetwas als kommerzielle Software kennt, bin ich für Hinweise dankbar.
MfG
El Zorro
Hallo zusammen,
ich hab das Ganze nun mit RDO gelöst. Funktioniert ohne Probleme. Für alle interessierten hier der Code:
using System.Text;
using Redemption;
using outlook = Microsoft.Office.Interop.Outlook;
namespace RDO_Test
{
class Program
{
static void Main(string[] args)
{
outlook.Application oApp = new outlook.Application();
outlook.NameSpace oNS = oApp.GetNamespace("MAPI");
RDOSessionClass rdoSession = new RDOSessionClass();
rdoSession.MAPIOBJECT = oNS.MAPIOBJECT;
Dictionary<String, RDOFolder> toplevelFolder = new Dictionary<string, RDOFolder>();
List<RDOContactItem> kontaktliste = new List<RDOContactItem>();
List<RDODistListItem> verteilerListen = new List<RDODistListItem>();
foreach (RDOStore postfach in rdoSession.Stores)
{
if (postfach.Name.StartsWith("Postfach"))
{
toplevelFolder.Add(postfach.Name, postfach.IPMRootFolder);
}
//Console.WriteLine(postfach.Name);
}
RDOFolder kontakteSource = null;
foreach (RDOFolder subfolder in toplevelFolder["Sekretariat"].Folders)
{
//Console.WriteLine(subfolder.Name);
if (subfolder.Name.Equals("Kontakte"))
{
Console.WriteLine("Anzahl Kontakte und Verteiler: "+subfolder.Items.Count.ToString());
kontakteSource = subfolder;
}
}
foreach (object obj in kontakteSource.Items)
{
if (obj is RDOContactItem)
{
kontaktliste.Add((RDOContactItem)obj);
}
if (obj is RDODistListItem)
{
verteilerListen.Add((RDODistListItem)obj);
}
}
Console.WriteLine(verteilerListen.Count.ToString()+" "+kontaktliste.Count.ToString());
Console.ReadLine();
}
}
}
Hallo Rainbird
In der Ordnerliste von Outlook sind mehrere Postfächer (aus Exchange) eingehangen. Nur ein bestimmtes hat immer die aktuellen Kontakte.
Ich möchte nun ein Programm schreiben, dass auf Knopfdruck diese aktuellen Kontakte und Verteiler in die entsprechenden Kontaktordner der anderen POstfächer einfügt.
Ich werd es jetzt noch mal mit RDO probieren.
Hallo zusammen,
ich versuche mit dem folgenden Code alle Kontakte bzw. Verteiler eines öffentlichen Kontaktordners in Listen zu speichern:
List<ContactItem> KontaktListe = new List<ContactItem>();
List<DistListItem> VerteilerListen = new List<DistListItem>();
foreach (object obj in kontaktOrdner.Items)
{
ContactItem contact = obj as ContactItem;
if (contact != null)
{
KontaktListe.Add(contact);
}
DistListItem lisItem = obj as DistListItem;
if (lisItem != null)
{
VerteilerListen.Add(lisItem);
}
}
kontaktOrdner ist dabei ein MAPIOrdner der etwa 40 Verteilerlisten und etwa 660 Kontakte enthält.
Mein Problem ist, dass meine foreach-Schleife nur sehr viel weniger Kontakte bzw. Verteiler in die Listen einfügt.
Woran kann das liegen?
Gruß el Zorro
Hallo zusammen,
ich habe da mal eine allgemeine Frage. Ist es möglich bei der InvokeWorkflowActivity der WorkflowFoundation den zu instanzierenden Workflow mit einer vorher festgelegten InstanceID zu starten?
Gruß el Zorro
Hi,
ich kann an dieser Stelle nur wieder für WCF sprechen. Da is es so, dass man den Methodenprototypen im Dienstvertrag(ist als Interface konzipiert) bestimmte Parameter voranstellt, die festlegen ob die Methode eine Session öffnet oder schließt.
Als guten link kann ich google.de empfehlen 😉
Such doch mal nach remoting+tutorial. Da findet sich bestimmt ein Beispiel für CAO.
Ansonsten kann ich nur den Umstieg auf .Net 3.0 empfehlen. WCF und WF haben mich persönlich sehr begeistert.
Gruß
el Zorro
Hallo syn87,
ich nutze z.Z. für ein Projekt .Net 3.0 und damit die WCF. Hier ist es so, dass es für die ServiceInstanzierung verschiedene Möglichkeiten gibt. Dazu zählen eine Single-Instanzierung, eine PerCall und eine PerSession.
Für dein Problem wäre die PerSession-Instanzierung die Lösung. D.h. ein Client startet ein neues ServiceObjekt auf dem Server und in diesem Objekt könntest du als Property deine Datenbank-Identifizierung für den sessionstartenden Client hinterlegen.
Ich kenn mich leider mit dem Remoting nicht so aus. Aber vielleicht gibt es da was ähnliches. Einfach mal nach Sessionmanagement suchen.
Gruß
el Zorro
Ergänzung:
Ich hab noch mal schnell bei msdn geschaut. Das folgende Zitat stammt von hier
Folgende Möglichkeiten kommen also in Betracht:
Client Activated Object (CAO)
Jeder Client bekommt sein eigenes Objekt.
Wellknown Objects
Singleton:
Es gibt nur eine einziges Objekt, auf das alle Clients Zugriff haben.
Somit Sharing gemeinsamer Daten möglich.
Konkurrierende Zugriffe auf gemeinsame Daten erfordern Synchronisation.
Skalierung bei vielen Clients beeinträchtigt.
SingleCall:
Bei jedem Methodenaufruf wird ein Objekt erzeugt und danach wieder abgebaut.
Objekt darf also keinen Status halten.
Somit geeignet, wenn hohe Skalierung erforderlich ist.
Das mit den banalen Fragen wird hier ungern gesehen:
[Hinweis] Wie poste ich richtig?
Punkt 1.1.1
Erkläre doch erst einmal was du genau vorhast. Wenn du nur das aktuelle Bild deiner Cam in einer Form anzeigen möchtest, dann ist der zugriff per URL doch das was du suchst. Die site für die JAVA API scheint schön längere Zeit down zu sein, so dass du da auch nicht weiter kommst.
Für C# wäre eine .Net Klassenbibliothek bzw. COM TypeLibrary das Ideale. Der Begriff API kommt eher aus der C++ Richtung.
Ich bezweifle aber wie schon gesagt, dass du für deine Cam eine solche Klassenbibliothek finden wirst.
Ein anderer Ansatz ist aber in deinem geposteten techwiki unter "Vorwort" angedeutet. Dort wird die Cam über einen http-request angesprochen. Ich weiß nicht genau, aber vielleicht kann man das auch von c# aus machen.
Eine API (application programming interface) ist eine Programmierschnittstelle um auf andere Software, oder wie in deinem Fall Hardware, programmtechnisch zuzugreifen. Sie wird meist als Verweis in dein Projekt eingebunden und stellt dir dann Methoden zur Verfügung, um auf die Hardware oder Software zuzugreifen.
Hallo meldano,
was du brauchst ist ein Hersteller einer Netzwerkkamera, der im Lieferumfang eine sogenannte API dabei hat.
Du könntest jetzt den Hersteller deiner Cam anschreiben und nachfragen ob er so eine Api zur Verfügung stellt. (Was ich aber bezweifele)
Anders wirst du keine Möglichkeit haben programmtechnisch auf deine Cam zuzugreifen.
el Zorro
PS: Schau dich mal hier um:
http://www.axis.com/products/video/camera/index.htm
Die fallen mir spontan dazu ein und die liefern auch ein SDK mit um eigene Anwendungen zu entwickeln.
http://www.axis.com/techsup/cam_servers/dev/index.htm
da kann ich dir nicht wirklich weiter helfen. Aber mir hat das folgende Programm ziemlich geholfen:
http://www.tools4net.de/doc/adsearch.htm
ist freeware und man kann sich einen sehr guten überblick über das eigenen AD verschaffen. ist übrigens auch in c# programmiert.
wenn ich zu einer Gruppe nur den Namen habe, lasse ich mir den dazugehörigen LDAP-Pfad mit folgender Methode auslesen:
public class OneGroup
{
public string Name; // Benutzername
public string Description; // eine Beschreibung
public string distinguishedName;//Ldap-Path
}
public static OneGroup getOneGroup(string domainName,
string machineName, string groupName, string bindUser, string bindPassword)
{
OneGroup onegroup = new OneGroup();
// Gültigen Rechnernamen für den lokalen Computer erzeugen
// falls weder die Domäne noch der Rechnername übergeben wurden
if (domainName == null && machineName == null)
machineName = Environment.MachineName;
// DirectoryEntry-Objekt für den Benutzer erzeugen
if (domainName == null && machineName == null)
machineName = Environment.MachineName;
string adsiPath = "WinNT://" +
(domainName != null ? domainName + "/" : "") +
(machineName != null ? machineName + "/" : "") +
groupName + ",group";
DirectoryEntry groupEntry = new DirectoryEntry(adsiPath,
bindUser, bindPassword);
try
{
onegroup.Name = groupName;
onegroup.Description = (string)GetADSIProperty(
groupEntry, "Description", typeof(string));
}
finally
{
// ADSI-Objekt freigeben
groupEntry.Dispose();
}
return onegroup;
}
Hallo Iceskaarj (der name ist schwieriger als mancher Code 😉 )
ich hab das mal in einer Methode so gelöst:
public static List<string> EnumGroupMembers(string ldapPath)
{
DirectoryEntry de = new DirectoryEntry(ldapPath);
DirectoryEntry temp;
List<string> memberlist = new List<string>();
foreach (string member in de.Properties["member"])
{
temp = new DirectoryEntry("LDAP://" + member);
if (temp.SchemaClassName.ToLower() == "user")
{
memberlist.Add(temp.Properties["sAMAccountName"][0].ToString());
}
}
memberlist.Sort();
return memberlist;
}
Gruß el Zorro
Erst mal vielen Dank. Das Problem der inactivityTimeout war mir noch gar nicht bewußt. Ich werd das mit einer Art heartbeat-Signal von Seiten des Clients beheben.
Mir ist jetzt nur noch nicht klar, wie ich auf Seiten des Servers das Überschreiten der inactivityTimeout abfangen kann.
Welches event wird denn da gefeuert und wo kann ich einen eventuellen eventhandler anmelden?
Für weitere Hilfe wäre ich sehr dankbar.
Hat sich erledigt.
Das event erreicht man im Service über:
OperationContext.Current.InstanceContext.Closing
Hallo svenson,
ich nutze als Binding-Typ das netTcpBinding. Was hab ich denn da für Möglichkeiten? Mir reichen schon ein paar Schlagworte, mit denen ich google füttern kann.
Auf clientseite erstelle ich ein proxyObject, das auf einer DuplexChannelFactory basiert, um auch Callbackaufrufe zu ermöglichen.
Man könnte ja nun von Serverseite aus alle paar Sekunden einen "Anruf" bei den Clients starten und schauen werantwortet. Ich weiß halt nur nicht ob das der richtige Weg ist.
Gruß El Zorro
Hallo zusammen,
ich entwickle eine Applikation auf Basis von WCF und WF. Server und Client kommunizieren in Sessions miteinander. Nun suche ich nach einer Möglichkeit wie der Server mitbekommt, dass ein Client die Session unvermittelt(durch Programmabsturz oder unterbrochene Netzwerkverbindung) abgebrochen hat ohne sie "ordentlich" zu beenden.
Ich hoffe mein Problem ist klar und ihr habt ein paar gedankliche Impulse für mich.
Gruß El Zorro
Hallo,
wenn du mit Reporting den TrackingService meinst, so gibt es den als SqlTrackingService, ConsoleTrackingService und SimpleFileTrackingService.
Letzterer schreibt die Infos in eine Datei.
Beispiele hab ich leider nicht.
Gruß el Zorro
SimpleFileTrackingService bei google gibt als erstes folgenden Treffer:
Hab ich mir fast schon gedacht. 🙂
Trotzdem Danke
Hallo,
kann man mit der Express Version auch die WindowsWorkflowFoundation nutzen?
Hab nur den Hinweis zur WPF gefunden.
Gruß el_Zorro
Hat sich erledigt.
Man muss im Eventhandler für das RowUpdatedEvent den UpdateStatus auf SkipAllRemainingRows setzen.
Um dann noch inkonsistente Daten zu vermeiden machtman das ganze in einer Transaktion und führt einen Rollback durch.
Gruß el_Zorro
verwendetes Datenbanksystem: MS SQL Server 2005
Hallo zusammen,
ich suche eine Möglichkeit, einen laufenden Update eines DataAdapters abzubrechen.
Gruß el_Zorro