Neue Antwort schreiben 
 
Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Der Code-Schnippsel-Thread
PacMani
Unregistered

 
Beitrag #181
RE: Der Code-Schnippsel-Thread
Code:
using System;
using System.Diagnostics;
using System.Globalization;
using System.Runtime.InteropServices;
using System.ComponentModel.Design;
using Microsoft.Win32;
using Microsoft.VisualStudio;
using Microsoft.VisualStudio.Shell.Interop;
using Microsoft.VisualStudio.OLE.Interop;
using Microsoft.VisualStudio.Shell;

namespace MyPackageNamespace
{
    #region #### MyPackage #######################################################################
    #endregion
    /// <summary>
    /// Diese Klasse implementiert das Package, welches aus dieser Assembly entsteht.
    /// Die Mindestanforderungen an eine Klasse, die ein gültiges Visual Studio-Package
    /// bereitstellen soll, ist die Implementierung des IVsPackage-Interfaces und die
    /// Registrierung von sich selbst mit der Shell.
    /// Um diese Anforderungen zu erfüllen nutzt dieses Package eine Helferklasse, die im Managed
    /// Package Framework (MPF) definiert ist: Es leitet von der Package-Klasse ab, welche die
    /// Implementierung des IVsPackage-Interfaces bietet und benutzt die im Framework definierten
    /// Registrierungs-Attribute um sich selbst und seine Komponenten in der Shell zu registrieren:
    /// PackageRegistrationAttribute: Dieses Attribut teilt dem PkgDef-Erstellungstool
    ///     (CreatePkgDef.exe) mit, dass diese Klasse ein Package ist.
    /// InstalledProductRegistrationAttribute: Dieses Attribut wird benutzt, um die Informationen
    ///     zu registrieren, die dieses Package im Hilfe-/Info-Dialog von Visual Studio anzeigt.
    /// ProvideMenuRessourceAttribute: Dieses Attribut wird benötigt, damit die Shell weiß, dass
    ///     mit diesem Package Menüpunkte erstellt werden.
    /// ProvideToolWindowAttribute: Dieses Attribut registriert das Toolwindow dieses Packages.
    /// </summary>
    [PackageRegistration(UseManagedResourcesOnly = true)]
    [InstalledProductRegistration("#110", "#112", "1.0", IconResourceID = 400)]
    [ProvideMenuResource("Menus.ctmenu", 1)]
    [ProvideToolWindow(typeof(MyToolWindow))]
    [Guid(GuidList.guidMyPkgString)]
    public sealed class MyPackage : Package
    {
        #region ---- KONSTRUKTOREN ------------------------------------------------------------------------
        #endregion

        /// <summary>
        /// Standardkonstruktor des Packages.
        /// An diesem Punkt kann Initialisierungscode geschrieben werden, der den Visual Studio-
        /// Service nicht benötigt, da das Package zu diesem Zeitpunkt zwar erstellt wird aber noch
        /// nicht Visual Studio bekannt gemacht worden ist. Der Platz für alle anderen
        /// Initialisierungsarbeiten ist in der Initialize-Methode.
        /// </summary>
        public MyPackage()
        {
            Debug.WriteLine(String.Format("Entering constructor for: {0}", this.ToString()));
        }

        #region ---- METHODEN (PROTECTED) -----------------------------------------------------------------
        #endregion

        #region ---- Package ----
        #endregion

        /// <summary>
        /// Initialisierung des Packages; diese Methode wird direkt nach der Bekanntmachung des
        /// Packages aufgerufen, womit sie der Platz für Initialisierungscode ist, der den
        /// Visual Studio-Service benötigt.
        /// </summary>
        protected override void Initialize()
        {
            Debug.WriteLine(String.Format("Entering Initialize() of: {0}", this.ToString()));
            base.Initialize();

            // Befehlshandler für das Menü hinzufügen (Befehle müssen in .vsct-Datei existieren)
            OleMenuCommandService mcs = GetService(typeof(IMenuCommandService))
                as OleMenuCommandService;
            if (null != mcs)
            {
                // Befehl für den Menüeintrag erstellen
                CommandID menuCommandID = new CommandID(GuidList.guidMyCmdSet,
                    (int)PkgCmdIDList.cmdidBlitzSettings);
                MenuCommand menuItem = new MenuCommand(MenuItemCallback, menuCommandID);
                mcs.AddCommand(menuItem);
                // Befehl für das Toolfenster erstellen
                CommandID toolwndCommandID = new CommandID(GuidList.guidMyCmdSet,
                    (int)PkgCmdIDList.cmdidMyPackageToolwindow);
                MenuCommand menuToolWin = new MenuCommand(ShowToolWindow, toolwndCommandID);
                mcs.AddCommand(menuToolWin);
            }
        }

        #region ---- METHODEN (PRIVATE) -------------------------------------------------------------------
        #endregion

        /// <summary>
        /// Diese Funktion ist ein Callback für die Ausführung eines Befehls wenn der Menüeintrag
        /// angeklickt wurde. In der Initialize-Methode ist zu sehen, wie der Menüeintrag an diese
        /// Funktion mit Hilfe des OleMenuCommandService-Services und der MenuCommand-Klasse
        /// gebunden wird.
        /// </summary>
        private void MenuItemCallback(object sender, EventArgs e)
        {
            // MessageBox anzeigen, um anzuzeigen, dass der Befehl erkannt wurde
            IVsUIShell uiShell = (IVsUIShell)GetService(typeof(SVsUIShell));
            Guid clsid = Guid.Empty;
            int result;
            Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(uiShell.ShowMessageBox(0​, ref clsid,
                "Visual Blitz", String.Format("Inside {0}.MenuItemCallback()", this.ToString()),
                String.Empty, 0, OLEMSGBUTTON.OLEMSGBUTTON_OK, OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST,
                OLEMSGICON.OLEMSGICON_INFO, 0/*=false*/, out result));
        }

        /// <summary>
        /// Diese Funktion wird aufgerufen, wenn der Benutzer den Menüeintrag anklickt, der dass
        /// Toolfenster öffnet. In der Initialize-Methode ist zu sehen, wie der Menüeintrag an
        /// diese Funktion mit Hilfe des OleMenuCommandService-Services und der MenuCommand-Klasse
        /// gebunden wird.
        /// </summary>
        private void ShowToolWindow(object sender, EventArgs e)
        {
            // Instanznummer 0 des Fenster erhalten. Dieses Fenster ist eine Einzelinstanz, somit
            // ist dies die einzige Instanz. Die letzte Flag ist auf true gesetzt, damit das
            // Toolfenster erstellt wird wenn es noch nicht existiert.
            ToolWindowPane window = this.FindToolWindow(typeof(MyToolWindow), 0, true);
            if (null == window || null == window.Frame)
            {
                throw new NotSupportedException(Resources.CanNotCreateWindow);
            }
            IVsWindowFrame windowFrame = (IVsWindowFrame)window.Frame;
            Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(windowFrame.Show());
        }

    } // #### MyPackage ##################################################################
}

Visual Studio-Package-Hauptklasse mit deutscher Übersetzung (und aufgeräumt)
01.09.2012 18:49
Diese Nachricht in einer Antwort zitieren
DosAmp Offline
Anderes Zeigegerät

Beiträge: 12.217
Registriert seit: Jul 2008
Beitrag #182
RE: Der Code-Schnippsel-Thread
(20.08.2012 21:58)DosAmp schrieb:  Weil der Broadcom-Treiber unter Linux nach wie vor Müll ist und wpa_supplicant allein keine toten Verbindungen erkennt.

Leicht verbesserte Variante:
Code:
#!/bin/sh
INTERFACE=wlan0
ROUTER=`ip route show | grep ^default | awk '{print $3}'`
while true; do
    ping -c 1 $ROUTER >/dev/null || netcfg -R $INTERFACE
    sleep 60
done

Erinnerst du dich an #whfclassics? Es ist zurück! In Pog-Form.
07.09.2012 20:55
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
mrshadowtux
Unregistered

 
Beitrag #183
RE: Der Code-Schnippsel-Thread
Macht da sder network-manager nicht schon so?
Wenn nicht, kann mans dort integrieren?
07.09.2012 20:57
Diese Nachricht in einer Antwort zitieren
DosAmp Offline
Anderes Zeigegerät

Beiträge: 12.217
Registriert seit: Jul 2008
Beitrag #184
RE: Der Code-Schnippsel-Thread
(07.09.2012 20:57)mrshadowtux schrieb:  Macht das der network-manager nicht schon so?

Das würde ein Netzwerk-Daemon mit ziemlicher Sicherheit für mich erledigen, wenn ich denn einen laufen hätte. :D Nutze aber seit mehr als zwei Jahren noch immer nur blankes netcfg hier und kam damit bis zuletzt recht gut aus.

Erinnerst du dich an #whfclassics? Es ist zurück! In Pog-Form.
(Dieser Beitrag wurde zuletzt bearbeitet: 07.09.2012 21:03 von DosAmp.)
07.09.2012 21:02
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
tk1908 Offline
Unixer

Beiträge: 7.343
Registriert seit: Apr 2009
Beitrag #185
RE: Der Code-Schnippsel-Thread
Code:
#!/bin/sh
NAME="Tagesbackup"
DATE=`date +"%d-%m-%Y"`
DAY=`date +"%A"`
FULLNAME="$NAME-$DATE"
cd /home/tobias/Dokumente
if [ -d /media/Daten/Backups/Tagesbackup/$FULLNAME ]; then
rsync -a -u /home/tobias/Dokumente/ /media/Daten/Backups/Tagesbackup/$FULLNAME/
rsync -a -u /home/tobias/Dokumente/ /mnt/LAN/Sicherung\ Doku/Tagesbackup/$FULLNAME/
elif [ $DAY = "Sonntag" ]; then
  tar czfv $FULLNAME /media/Daten/Backups/Tagesbackup/*
  cp /media/Daten/Backups/Tagesbackup/$FULLNAME/ /mnt/LAN/Sicherung\ Doku/Wochenbackup/$FULLNAME
  rm /mnt/LAN/Sicherung\ Doku/Backups/Tagesbackup/*
  rm /media/Daten/Backups/Tagesbackup/*
else
mkdir -p /media/Daten/Backups/Tagesbackup/$FULLNAME
mkdir -p /mnt/LAN/Sicherung\ Doku/Tagesbackup/$FULLNAME
cp -r /home/tobias/Dokumente/* /media/Daten/Backups/Tagesbackup/$FULLNAME
cp -r /media/Daten/Backups/Tagesbackup/$FULLNAME /mnt/LAN/Sicherung\ Doku/Tagesbackup
fi

[Bild: Rz3JNLI.gif]
Meine Beiträge stehen unter der MIT-Lizenz:D

(09.04.2016 13:26)tk1908 schrieb:  externe HDD am Router? Klar ich tausch mein Auto gegen nen Tretroller mit Bremsklotz.
(Dieser Beitrag wurde zuletzt bearbeitet: 10.09.2012 19:59 von tk1908.)
10.09.2012 19:59
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
friedrichheinze Offline
...und Kondensatoren.

Beiträge: 2.838
Registriert seit: Jul 2008
Beitrag #186
RE: Der Code-Schnippsel-Thread
Supereinfaches Uploadskript mit Prozentanzeige (dank gandro :)) - geht eher um's Prinzip, falls einer mal mit Uploads basteln will.
Schmeisst alle Dateien mit ihrem Originalnamen in ./uploads (tut also nix gegen gleiche Dateinamen und der Ordner sollte schreibbar sein).

index.html
Code:
<!doctype html>
<html>
  <head>
  <title>Postbox.</title>
  <script type="text/javascript">
    function hideForm() {
      document.getElementById("formDiv").style.display = "none";
    }

    function showForm() {
      document.forms['upload']['fileSelector'].value = "";
      document.getElementById("formDiv").style.display = "block";
    }

    function updateProgress(e) {
      var percent = 100 * e.loaded / e.total;
      setProgress(percent);
    }

    function setProgress(progress) {
      document.getElementById("progressDiv").innerHTML = progress + "%";
    }

    function upload() {
      hideForm();
      var form = new FormData(document.forms['upload']);
      var req = new XMLHttpRequest();
      req.upload.addEventListener("progress", updateProgress, false);
      req.addEventListener("load", showForm, false);
      req.open("POST", "upload.php", true);
      req.send(form);
    }
    </script>
  </head>
  <body>
    <div id="formDiv">
      <form name="upload" action="javascript:upload()" method="POST" enctype="multipart/form-data">
        <input type="file" name="fileSelector"/>
        <input type="submit" value="Reinschmeissen"/>
      </form>
    </div>
    <div id="progressDiv">
    </div>
  </body>
</html>
upload.php
PHP-Code:
<?php
   $uploads 
'uploads';
   
$file $_FILES['fileSelector'];

   if(
$file['error'] == UPLOAD_ERR_OK) {
     
move_uploaded_file($file['tmp_name'], "$uploads/" $file['name']);
   }
?>
10.09.2012 21:18
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
gandro Offline
Quälgeist

Beiträge: 8.950
Registriert seit: Jul 2008
Beitrag #187
RE: Der Code-Schnippsel-Thread
Ui, simpler als erwartet, nett.
10.09.2012 21:23
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
winfreak Offline
アンゲシュテルタ

Beiträge: 10.515
Registriert seit: Aug 2008
Beitrag #188
RE: Der Code-Schnippsel-Thread
Bei Doublequotes ist concatination unnötig, man könnte auch schreiben:
"$uploads/$file[name]"

Wichtig ist dann nur, dass man die singlequotes weglässt.

[Bild: winfreak_32972_14.png]
(Dieser Beitrag wurde zuletzt bearbeitet: 10.09.2012 21:27 von winfreak.)
10.09.2012 21:25
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
friedrichheinze Offline
...und Kondensatoren.

Beiträge: 2.838
Registriert seit: Jul 2008
Beitrag #189
RE: Der Code-Schnippsel-Thread
(10.09.2012 21:25)winfreak schrieb:  Bei Doublequotes ist concatination unnötig, man könnte auch schreiben:
"$uploads/file[name]"

Wichtig ist dann nur, dass man die singlequotes weglässt.

Joa, Geschmackssache... ich komm mir blöd dabei vor Strings ohne quotes zu schreiben ;) bin aber auch nicht so der PHP-nerd.
10.09.2012 21:27
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
tk1908 Offline
Unixer

Beiträge: 7.343
Registriert seit: Apr 2009
Beitrag #190
RE: Der Code-Schnippsel-Thread
Code:
#! bin/sh
SUFFIX="tar"
Backup="Homebackup.$SUFFIX"
echo -n "Pfad zum Homeverzeichnis: "
read home
echo -n "Pfad zum Backupverzeichnis: "
read Destination
# cp -r $home $Destination
# cd $Destination
tar czfv $Backup $home

[Bild: Rz3JNLI.gif]
Meine Beiträge stehen unter der MIT-Lizenz:D

(09.04.2016 13:26)tk1908 schrieb:  externe HDD am Router? Klar ich tausch mein Auto gegen nen Tretroller mit Bremsklotz.
10.09.2012 21:29
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Neue Antwort schreiben 


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste