30 sep 2012

Reading and writing to GPX Files


 public static void CreateNewGpxFile()
        {
            gpxType  Gpxfile = new gpxType();
            trkType Tracking1 = new trkType();
            trksegType TrackingRegister = new trksegType();


            wptType Waypoint1 = new wptType();
            Waypoint1.lon = ( decimal) 4.13;
            Waypoint1.lat = ( decimal) 51.7;

            wptType Waypoint2 = new wptType();
            Waypoint1.lon = ( decimal)4.18;
            Waypoint1.lat = ( decimal)51.6;

            List<wptType > Waypoints = new List<wptType >();
            Waypoints.Add(Waypoint1);
            Waypoints.Add(Waypoint2);

            TrackingRegister.trkpt = Waypoints.ToArray();
            Tracking1.trkseg = TrackingRegister.SingleItemAsArray< trksegType>();
            Gpxfile.trk = Tracking1.SingleItemAsArray< trkType>();

            string Gpxfilestring = FileToStringBuilder(@"c:\temp\test.gpx" ).ToString();

            Gpxfile =  DeserializeFromXml<gpxType>(Gpxfilestring);
           

        }



1.  Go to http://www.topografix.com/GPX/1/1/gpx.xsd and dowload the xsd schema to C:\temp\ of your computer.
2. Start the Visual Studio 2010 CMD
3. execute the command : xsd c:\temp\gpx.xsd /classes  /out:c:\temp\

25 sep 2012

excel is very slow

- be sure there are no conditional formatting rules
- be sure that the excel file does have links to websites / server that aren't accessible at this moment.
- be sure that the images are small (compress all pictures in the excel)

Get logged on users

ever tryed to resolve the logged onusers with wmi?
I think it is just the wrong way.


public static List< string> GetLoggedOnUsers(string Computername)
        {
            List<string > Users = new List<string >();
            try
            {
                // Open HKEY_USERS
                // on a remote computer.
              
                RegistryKey environmentKey = RegistryKey.OpenRemoteBaseKey(RegistryHive .Users, Computername);

                foreach (string subKeyName in environmentKey.GetSubKeyNames())
                {

                    RegistryKey rkeyuser = environmentKey.OpenSubKey(subKeyName);
                    RegistryKey rkeyVendor = rkeyuser.OpenSubKey("Volatile Environment");
                    if (rkeyVendor != null )
                    {
                        String[] ValueNames = rkeyVendor.GetValueNames();
                        foreach (string name in ValueNames)
                        {
                            if(name=="USERNAME" )
                                Users.Add(rkeyVendor.GetValue(name).ToString());
                        }
                    }
           
               
                }

                // Close the registry key.
                environmentKey.Close();
            }
            catch
            {
            }
            return Users;
        }

11 sep 2012

parse xml to vcard.xsl


vcard.xml
 xml version =" 1.0 " ?>
 xml-stylesheet href="vcard.xsl" type="text/xsl" ?>
<contacts>
<Contact>
<FullName> John </FullName >
<LastName> Johnson </LastName >
<FirstName> John </FirstName >
<MiddleInitial></ MiddleInitial >
<Title></ Title >
<Suffix></ Suffix >
<OfficeStreetAddress></ OfficeStreetAddress >
<OfficeCity></ OfficeCity >
<CellPhoneNumber> +123456789 </CellPhoneNumber >
</Contact>
</contacts>



vcard.xsl
 xml version =" 1.0 " encoding =" UTF-8 "?>
< xsl:stylesheet
        version =" 1.0 "
        xmlns:xsl =" http://www.w3.org/1999/XSL/Transform "
        xmlns =" http://www.w3.org/1999/xhtml ">    
       < xsl:output method = "text " indent = "yes " />       
< xsl:template match =" Contact ">

BEGIN:VCARD
VERSION:3.0
FN;ENCODING=QUOTED-PRINTABLE;CHARSET=UTF-8: < xsl:value-of select =" FullName "/>
N;ENCODING=QUOTED-PRINTABLE;CHARSET=UTF-8: < xsl:value-of select =" LastName "/> ; <xsl:value-of select= " FirstName" /> ;< xsl:value-of select =" MiddleInitial "/> ; <xsl:value-of select= " Title" /> ;< xsl:value-of select =" Suffix "/>
ADR;ENCODING=QUOTED-PRINTABLE;CHARSET=UTF-8;TYPE=WORK;TYPE=PREF:;; < xsl:value-of select =" OfficeStreetAddress "/> ; <xsl:value-of select= " OfficeCity" /> ;< xsl:value-of select =" OfficeState "/> ; <xsl:value-of select= " OfficeZIP" /> ;< xsl:value-of select =" OfficeCountry "/>
ADR;ENCODING=QUOTED-PRINTABLE;CHARSET=UTF-8;TYPE=HOME;TYPE=PREF: < xsl:value-of select =" PostOfficeAddress "/> ;; <xsl:value-of select= " StreetAddress" /> ;< xsl:value-of select =" City "/> ; <xsl:value-of select= " State" />< xsl:value-of select =" County "/> ; <xsl:value-of select= " Zip" /> ;< xsl:value-of  select = "Country " />
TITLE;ENCODING=QUOTED-PRINTABLE;CHARSET=UTF-8: < xsl:value-of select =" JobTitle "/>
ORG;ENCODING=QUOTED-PRINTABLE;CHARSET=UTF-8: < xsl:value-of select =" CompanyName "/> ; <xsl:value-of select= " Department" />
EMAIL;ENCODING=QUOTED-PRINTABLE;CHARSET=UTF-8;TYPE=INTERNET: < xsl:value-of select =" InternetAddress "/>
TEL;ENCODING=QUOTED-PRINTABLE;CHARSET=UTF-8;TYPE=CELL: < xsl:value-of select =" CellPhoneNumber "/>
TEL;ENCODING=QUOTED-PRINTABLE;CHARSET=UTF-8;TYPE=HOME: < xsl:value-of select =" PhoneNumber "/>
TEL;ENCODING=QUOTED-PRINTABLE;CHARSET=UTF-8;TYPE=WORK: < xsl:value-of select =" OfficePhoneNumber "/>
URL;ENCODING=QUOTED-PRINTABLE;CHARSET=UTF-8: < xsl:value-of select =" WebSite "/>
X-IBM-LOOKUP-TYPE: <xsl:value-of select= " Type" />
END:VCARD
</ xsl:template>
</ xsl:stylesheet>

Sources : 

10 sep 2012

QR codes in C#

1. start new winforms project 
2. add nuget package : Qr Code libary
3. add using MessagingToolkit.QRCode;  in the class
4. add code in the load function of the form.
     
     string QRText = "TEL:" ;
            MessagingToolkit.QRCode.Codec. QRCodeEncoder MyQrcode = new MessagingToolkit.QRCode.Codec.QRCodeEncoder ();
            System.Drawing. Bitmap bm = MyQrcode.Encode(QRText);
            pictureBox1.Image = bm;

9 jul 2012

do a search in each column of a database


the TSQL code works for me.
But i wonder if there is a more efficient way to do this.
use < DATABASENAME >
declare @ColumnName    varchar ( MAX )
declare @TableName    varchar ( MAX )
declare @GuidToSEarch    varchar ( MAX )


SET @GuidToSEarch = '96E897D-61C7-E911-ECBA-02EA4E855FBE'

declare c1 cursor
for
  -- START OF QUERY TO SEARCH ALL COLUMNS OF DB
SELECT
    SysObjects .[Name] as TableName,
    SysColumns .[Name] as ColumnName
    --SysTypes.[Name] As DataType,
    --SysColumns.[Length] As Length
FROM
   SysObjects INNER JOIN SysColumns
    ON SysObjects .[Id] = SysColumns . [Id]
    INNER JOIN SysTypes
    ON SysTypes .[xtype] = SysColumns . [xtype]
WHERE
    SysObjects .[type] = 'U' AND SysTypes .[Name] != 'sysname'
   and  SysTypes .[Name] = 'uniqueidentifier'
    group by    SysObjects. [Name] , SysColumns .[Name]
ORDER BY
   SysObjects. [Name] , SysColumns .[Name]
 -- END OF QUERY


  open c1
  fetch next from c1 into @TableName , @ColumnName

  while @@fetch_status = 0
  begin     
       exec ( 'SELECT * FROM ' + @TableName + ' where ' + @ColumnName + '=''' + @GuidToSEarch  + '''' )
       if (@@ROWCOUNT =1 )
       BEGIN

       print 'found in ' + @TableName
       -- close c1
        break ;
       END
       fetch next from c1 into @TableName, @ColumnName
  end

  close c1
  deallocate c1
  go