Nov 06 2008

VB.Net: Schließen eines Forms verhindern

Tag: .NETMichael @ 11:46
Private Sub DoFormClosing(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
        If MessageBox.Show("Wollen Sie das Fenster schließen?", "Fenster schließen", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then
            e.Cancel = False
        Else
            e.Cancel = True
        End If
End Sub

Sep 25 2008

VB.NET: Erster Buchstabe als Grossbuchstabe

Tag: .NETMichael @ 8:14
Dim strValue As String = "let's test this."

MsgBox(StrConv(strValue, VbStrConv.ProperCase))

Sep 11 2008

VB.Net Copy Listview to Clipboard

Tag: .NETMichael @ 8:51
Public Sub CopyListViewToClipboard(ByVal lv As ListView)
Dim buffer As New StringBuilder

For i As Integer = 0 To lv.Columns.Count - 1
buffer.Append(lv.Columns(i).Text)
buffer.Append(vbTab)
Next

buffer.Append(vbCrLf)

For i As Integer = 0 To lv.Items.Count - 1
For j As Integer = 0 To lv.Columns.Count - 1
buffer.Append(lv.Items(i).SubItems(j).Text)
buffer.Append(vbTab)
Next

buffer.Append(vbCrLf)
Next

My.Computer.Clipboard.SetText(buffer.ToString)
End Sub

Sep 08 2008

Mit JavaScript Text markieren

Tag: JavaScriptMichael @ 12:42
/*
Marks the text in the given element (e)
*/
function markText(e) {
	// Not IE
	if (window.getSelection){
		var s = window.getSelection();

		if (s.setBaseAndExtent) {
                        // Safari

			s.setBaseAndExtent(e, 0, e, e.innerText.length - 1);
		} else {
			// Firefox and Opera

			var r = document.createRange();

			r.selectNodeContents(e);
			s.removeAllRanges();

			s.addRange(r);
		}
	} else if (document.getSelection) {
		// Some older browsers

		var s = document.getSelection();
		var r = document.createRange();

		r.selectNodeContents(e);
		s.removeAllRanges();
		s.addRange(r);
	}  else if (document.selection) {
		// IE

		var r = document.body.createTextRange();

		r.moveToElementText(e);
		r.select();
	}
}

Die Funktion führt ein “Ctrl+a” auf ein zu übergebendes Dom-Objekte aus (also z.B. ein “Div”).

Sollte in allen gängigen Browsern funktionieren.


Sep 04 2008

VB.Net – Windows über Handle in den Vordergrund holen

Tag: .NETMichael @ 15:08
Public NotInheritable Class Win32Helper
<System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint:="SetForegroundWindow", CallingConvention:=Runtime.InteropServices.CallingConvention.StdCall, CharSet:=Runtime.InteropServices.CharSet.Unicode, SetLastError:=True)> _
Public Shared Function SetForegroundWindow(ByVal handle As IntPtr) As Boolean
End Function
End Class

Und der Aufruf:

Dim Win32Help As New Win32Helper

‘bring windows to front
If Not IntPtr.Zero.Equals(objProcess.MainWindowHandle) Then
Win32Helper.SetForegroundWindow(objProcess.MainWindowHandle)
End If

Wo bei objProcess.MainWindowHandle durch das entsprechende Window-Handle ersetzt werden muss.


Aug 29 2008

DvAPI EML-Export unter .Net

Tag: .NETMichael @ 12:20

Eigentlich sollte der Export einer DavidZehn Mail ins EML-Format dank der DvAPI kein großes Problem sein. Ein entsprechendes Beispiel gibt es sogar in der API Dokumentation:

Private Declare Function DVEmlFromMailItem Lib "DvApi32" (ByVal oMailItem As  DvApi32.MailItem, ByVal strFileName As String) As Long

Private Sub  eMail2eml_Click()
'Save all MailItems entries as .eml

Dim oApp As  DvApi32.IApplication
Dim oAccount As DvApi32.Account
Dim oArchive As  DvApi32.Archive
Dim oMailItem As DvApi32.MailItem
Dim oMessageItems As  DvApi32.MessageItems
Dim Filename As String
Dim i As Integer

Set  oApp = CreateObject("DVOBJAPILib.DvISEAPI")
Set oAccount = oApp.Logon("",  "", "", "", "", "AUTH")
Set oArchive =  oAccount.GetSpecialArchive(DvApi32.DvArchiveTypes.DvArchivePersonalIn)
Set  oMessageItems = oArchive.AllItems

For i = 0 To oMessageItems.Count - 1
If oMessageItems.Item(i).Type = DvApi32.DvItemTypes.DvEMailItem Then
oMailItem = oMessageItems.Item(i)
Filename = Space(260)
If DVEmlFromMailItem(oMailItem, Filename) <> 0 Then
' In  Filename are the saved EML file
FileCopy Filename, "c:\" & oMailItem.Subject & ".eml"
End If
End If
Next
End Sub

Aber leider funktioniert dieses Beispiel unter .Net nicht, denn die Funktion FileCopy wirft hier eine Exception “Illegales Zeichen im Pfad”.

Das Problem liegt in der Zeile “Filename = Space(260)“, welche die Variable mit 260 Leerzeichen initialisiert.
In diese Variable wird von der API der temporäre Filename der EML Datei geschrieben, aber die überzähligen Leerzeichen werden dabei nicht entfernt.

.Net kann diese Leerzeichen nicht verarbeiten und wirft eine Exception. Auch ein Trim(Filename) hilft nicht weiter.

Aber man kann den temporären Filenamen einfach zerlegen und schneidet damit alle Leerzeichen nach dem eigentlichen Filenamen ab:

For i = 0 To oMessageItems.Count - 1
If oMessageItems.Item(i).Type = DvApi32.DvItemTypes.DvEMailItem Then
oMailItem = oMessageItems.Item(i)
Filename = Space(260)
If DVEmlFromMailItem(oMailItem, Filename) <> 0 Then
' In  Filename are the saved EML file
Filename = Filename.Substring(0, Filename.LastIndexOf(".tmp") + 4)

FileCopy Filename, "c:\" &  oMailItem.Subject & ".eml"
End If
End If
Next

Ein weiterer Lösungsansatz wäre, mit der IWshRuntimeLibrary zu arbeiten, denn der CopyFile Befehl des FileSystemObject (IWshRuntimeLibrary.FileSystemObject()) stört sich nicht an den Leerzeichen:

For i = 0 To oMessageItems.Count - 1
If oMessageItems.Item(i).Type = DvApi32.DvItemTypes.DvEMailItem Then
oMailItem = oMessageItems.Item(i)
Filename = Space(260)
If DVEmlFromMailItem(oMailItem, Filename) <> 0 Then
Dim objFileSystemObject As New IWshRuntimeLibrary.FileSystemObject()

' In  Filename are the saved EML file
objFileSystemObject.CopyFile(Filename, "c:\" &  oMailItem.Subject & ".eml")
End If
End If
Next

Aug 27 2008

TCPLi

Tag: AllgemeinesMichael @ 11:40

Nicht mehr ganz aktuell, aber ich will es niemanden vorenthalten ;-) :

Seit einiger Zeit gibt es für die Wii ja nun schon den Homebrew Channel. Damit man seine SD-Karte von einem PC aus befüllen kann, gibt’s zum Homebrew Channel ein Tool namens wiiload.

TCPLi

Da wiiload ein Konsolenprogramm ist, und die Bendienung daher nicht all zu komfortabel ist, habe ich vor einiger Zeit ein grafisches Oberfläche für Windows dafür geschrieben.

Das Ganze nennt sich TCPLi, wurde unter .Net entwickelt und benötigt daher die .Net Laufzeitumgebung.

Download:
Exe: http://projects.msfnet.de/TCPLi/TCPLi_exe.zip
Source Code: http://projects.msfnet.de/TCPLi/TCPLi_source.zip


Aug 20 2008

Trim für JavaScript

Tag: JavaScriptMichael @ 12:23

Trim für JavaScript:

replace(/^\s+|\s+$/g, ”)

Trim-Left:

replace(/^\s+/g, ”)

Trim-Right:

replace(/\s+$/g, ”)

Aug 19 2008

OracleXE standard Port und Firewall

Tag: OracleMichael @ 15:57

Bei der Installation der OracleXE Datenbank werden die standard Ports für den Datenbanklistener auf 1521 und für den HTTP Zugriff auf 8080 gesetzt.

Unter Windows XP meldet das Installationsprogramm das ein Port belegt ist, wenn er von der Firewall blockiert wird.

Daher sollten vor der Installation die entsprechenden Ports freigeschaltet werden.
Die Firewalleinstellungen findet man in der Systemsteuerung unter “Windows-Firewall”. Dort trägt man dann unter “Ausnahmen” die beiden Ports ein.


Aug 13 2008

Index Informationen für Oracle

Tag: Datenbanken,OracleMichael @ 12:37

Index Informationen für Oracle

Wie bekommt detaillierte Informationen zu den Indices einer Oracle Tabelle?
Hier die Lösung:

SELECT
    aic.index_name,
    aic.column_name,
    aic.column_position,
    aic.descend,
    aic.table_owner,
    CASE alc.constraint_type
        WHEN 'U' THEN 'UNIQUE'
        WHEN 'P' THEN 'PRIMARY KEY'
        ELSE ''
        END AS index_type
FROM
    all_ind_columns aic
    LEFT JOIN
        all_constraints alc
    ON
        aic.index_name = alc.constraint_name
    AND
        aic.table_name = alc.table_name
    AND
        aic.table_owner = alc.owner
WHERE
    aic.table_name = <TABLE_NAME>
AND
    aic.index_name = <INDEX_NAME>
ORDER BY
    column_position

<TABLE_NAME> und <INDEX_NAME> mit den entsprechenden Werten ersetzen.


« Vorherige SeiteNächste Seite »