Beiträge von wuff100
-
-
So funktioniert es, z.B. auf Laufwerk D:\ !
Spoiler anzeigen
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include "DragDropEvent.au3"
#include <OutlookExConstants.au3>
#include <OutlookEX.au3>
#include <Array.au3>
Opt("MustDeclareVars", 1)
DragDropEvent_Startup()
Main()
Exit
Func Main()
Local $MainWin = GUICreate("DragDrop", 380, 130, -1, -1, -1, $WS_EX_TOPMOST)
GUISetFont(12, 900)
GUICtrlCreateLabel("(DragDrop)", 40, 40)
DragDropEvent_Register($MainWin)
GUIRegisterMsg($WM_DRAGENTER, "OnDragDrop")
GUIRegisterMsg($WM_DRAGOVER, "OnDragDrop")
GUIRegisterMsg($WM_DRAGLEAVE, "OnDragDrop")
GUIRegisterMsg($WM_DROP, "OnDragDrop")
GUISetState(@SW_SHOW)
While GUIGetMsg() <> $GUI_EVENT_CLOSE
WEnd
GUIDelete()
EndFunc ;==>Main
Func OnDragDrop($hWnd, $Msg, $wParam, $lParam)
Static $DropAccept
Switch $Msg
Case $WM_DRAGENTER, $WM_DROP
ToolTip("")
Select
Case DragDropEvent_IsFile($wParam)
If $Msg = $WM_DROP Then
Local $FileList = DragDropEvent_GetFile($wParam)
MsgBox(262144, "DragDropEvent", StringReplace($FileList, "|", @LF))
EndIf
$DropAccept = $DROPEFFECT_COPY
Case DragDropEvent_IsText($wParam)
If $Msg = $WM_DROP Then
Global $oOutlook = _OL_Open()
$oOutlook = ObjCreate("Outlook.Application")
For $objItem In $oOutlook.ActiveExplorer.Selection
LOcal $sSubject = $objItem.Subject
;~ MsgBox(1, "", $sSubject)
$objItem.SaveAs("D:\" & "\" & StringRegExpReplace($sSubject, '[\/:*?"<>|]', '_') & ".msg", $olMSG)
Next
EndIf
$DropAccept = $DROPEFFECT_COPY
Case Else
$DropAccept = $DROPEFFECT_NONE
EndSelect
Return $DropAccept
Case $WM_DRAGOVER
Local $X = DragDropEvent_GetX($wParam)
Local $Y = DragDropEvent_GetY($wParam)
ToolTip("(" & $X & "," & $Y & ")")
Return $DropAccept
Case $WM_DRAGLEAVE
ToolTip("")
EndSwitch
EndFunc ;==>OnDragDrop
-
Zitat
Verarbeitest Du die MSG weiter? Was "treibst" Du damit?
Ich möchte sie auf der Festplatte als *.msg speichern. Alles andere ist sekundär.
Für andere Dateien ist es ja kein Problem.
Ich denke, water könnte was dazu sagen. Er hat die UDF dafür geschrieben, die ich sonst hervorragend nutze.
-
Zitat
Wenn Du ein Outloock Mail auf dem Desktop ablegst wandelt sich das nicht von selbst in ein msg
Das ist mir klar!
Ich habe eine AutoitGui und möchte es gern für diese GUI verwenden.
-
Moin,
ich versuche eine Outlooknachricht per Drag & Drop in einem Ordner als *.msg Datei mit @water's UDF zu speichern.
Anbei der Code. Es funktioniert leider nicht.
könnt ihr mir helfen?
Spoiler anzeigen
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include "DragDropEvent.au3"
#include <OutlookExConstants.au3>
#include <OutlookEX.au3>
#include <Array.au3>
Opt("MustDeclareVars", 1)
DragDropEvent_Startup()
Main()
Exit
Func Main()
Local $MainWin = GUICreate("DragDrop", 380, 130, -1, -1, -1, $WS_EX_TOPMOST)
GUISetFont(12, 900)
GUICtrlCreateLabel("(DragDrop)", 40, 40)
DragDropEvent_Register($MainWin)
GUIRegisterMsg($WM_DRAGENTER, "OnDragDrop")
GUIRegisterMsg($WM_DRAGOVER, "OnDragDrop")
GUIRegisterMsg($WM_DRAGLEAVE, "OnDragDrop")
GUIRegisterMsg($WM_DROP, "OnDragDrop")
GUISetState(@SW_SHOW)
While GUIGetMsg() <> $GUI_EVENT_CLOSE
WEnd
GUIDelete()
EndFunc ;==>Main
Func OnDragDrop($hWnd, $Msg, $wParam, $lParam)
Static $DropAccept
Switch $Msg
Case $WM_DRAGENTER, $WM_DROP
ToolTip("")
Select
Case DragDropEvent_IsFile($wParam)
If $Msg = $WM_DROP Then
Local $FileList = DragDropEvent_GetFile($wParam)
MsgBox(262144, "DragDropEvent", StringReplace($FileList, "|", @LF))
EndIf
$DropAccept = $DROPEFFECT_COPY
Case DragDropEvent_IsText($wParam)
If $Msg = $WM_DROP Then
Global $oOApp = ObjCreate("Outlook.Application")
Global $oItems = $oOApp.GetDefaultFolder($olFolderInbox).Items
ObjEvent($oItems, "oItems_")
Global $oItem = DragDropEvent_GetText($wParam)
Msgbox(1,"",$oItem)
Global $oOutlook = _OL_Open()
Global $SendMailFile = "D:\Hallo.msg"
_OL_ItemSave($oOutlook, $oItem, Default, $SendMailFile, $olMSGUnicode)
$oItem.Display
EndIf
$DropAccept = $DROPEFFECT_COPY
Case Else
$DropAccept = $DROPEFFECT_NONE
EndSelect
Return $DropAccept
Case $WM_DRAGOVER
Local $X = DragDropEvent_GetX($wParam)
Local $Y = DragDropEvent_GetY($wParam)
ToolTip("(" & $X & "," & $Y & ")")
Return $DropAccept
Case $WM_DRAGLEAVE
ToolTip("")
EndSwitch
EndFunc ;==>OnDragDrop
Func oItems_ItemAdd($oOL_Item)
MsgBox(64, "OutlookEX UDF Example Script", "Mail has been sent!" & @CRLF & @CRLF & _
"Subject: " & $oOL_Item.Subject)
_OL_ItemSave($oOutlook, $oOL_Item, Default, $SendMailFile, $olMSGUnicode)
EndFunc ;==>oOFolder_ItemAdd
-
Vielen Dank !
Gruß
-
Moin,
ich habe zB. die Zahl "20121212000000".
Daraus soll sich ein Datum mit dem Format "12.12.2012" ergeben.
Könnt ihr mir helfen?
Gruß
-
BugFix , deine Hüfte möchte ich haben.
Ist schon mal gut, aber die zweite Zeile wird nicht befüllt.
So funktioniert es:
For $i = 0 To Ubound($a1D) -2 Step 3
Vielen Dank!
-
Moin,
Spoiler anzeigen
Dim $aArray[6]
$aArray[0] = '1'
$aArray[1] = '2'
$aArray[2] = '3'
$aArray[3] = '4'
$aArray[4] = '5'
$aArray[5] = '6'
$rows = UBound($aArray)
$rows1 = $rows / 3
Dim $aArray2D[$rows1][3]
Local $cols = UBound($aArray2D, 2)
For $i = 0 To UBound($aArray) - 1
$aArray2D[0][0] = $aArray[0]
$aArray2D[0][1] = $aArray[1]
$aArray2D[0][2] = $aArray[2]
$aArray2D[1][0] = $aArray[3]
$aArray2D[1][1] = $aArray[4]
$aArray2D[1][2] = $aArray[5]
Next
_ArrayDisplay($aArray2D)
Ich versuche ein Array von 1D zu 2D zu wandeln.
Nach jedem 3. Eintrag soll eine neue Zeile beginnen und die darauffolgenden 3. Einträge in die nächste Zeile eingetragen werden.
Das Array kann sehr lang werden. So wie in dem Beispiel soll es aussehen, natürlich dynamisch.
Könnt ihr mir helfen?
-
Spoiler anzeigen
#include
#include
#include
OnAutoItExitRegister('OnAutoItExit')
; Create GUI
Local $hForm = GUICreate('Test ' & StringReplace(@ScriptName, '.au3', '()'), 400, 400)
Local $idCheck = GUICtrlCreateCheckbox('Enable Drag && Drop', 10, 370, 120, 19)
Local $idLabel = GUICtrlCreateLabel('', 100, 100, 200, 200)
Global $g_hLabel = GUICtrlGetHandle($idLabel)
GUICtrlSetBkColor(-1, 0xD3D8EF)
GUICtrlCreateLabel('Drop here', 175, 193, 50, 14)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
; Allow WM_DROPFILES to be received from lower privileged processes (Windows Vista or later)
#cs
If IsAdmin() Then
_WinAPI_ChangeWindowMessageFilterEx($g_hLabel, $WM_COPYGLOBALDATA, $MSGFLT_ALLOW)
_WinAPI_ChangeWindowMessageFilterEx($g_hLabel, $WM_DROPFILES, $MSGFLT_ALLOW)
EndIf
#ce
; Register label window proc
Global $g_hDll = DllCallbackRegister('_WinProc', 'ptr', 'hwnd;uint;wparam;lparam')
Global $g_pDll = DllCallbackGetPtr($g_hDll)
Global $g_hProc = _WinAPI_SetWindowLong($g_hLabel, $GWL_WNDPROC, $g_pDll)
GUISetState(@SW_SHOW)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
Case $idCheck
_WinAPI_DragAcceptFiles($g_hLabel, GUICtrlRead($idCheck) = $GUI_CHECKED)
EndSwitch
WEnd
Func _WinProc($hWnd, $iMsg, $wParam, $lParam)
Switch $iMsg
Case $WM_DROPFILES
Local $sFileList = _WinAPI_DragQueryFileEx($wParam)
If Not @error Then
ConsoleWrite('--------------------------------------------------' & @CRLF)
For $i = 1 To $sFileList[0]
ConsoleWrite($sFileList[$i] & @CRLF)
Next
EndIf
_WinAPI_DragFinish($wParam)
Return 0
EndSwitch
Return _WinAPI_CallWindowProc($g_hProc, $hWnd, $iMsg, $wParam, $lParam)
EndFunc ;==>_WinProc
Func OnAutoItExit()
_WinAPI_SetWindowLong($g_hLabel, $GWL_WNDPROC, $g_hProc)
DllCallbackFree($g_hDll)
EndFunc ;==>OnAutoItExit
So funktioniert es vom Explorer aus, aber nicht von Outlook.
Was könnte mein Fehler sein?
-
water, gibt es eine Idee von Outlook eine Datai per Drag und Drop zu kopieren?
Es ist vom Explorer aus ja möglich. Dateien lassen sich vom Explorer ja super per Drag Und Drop kopieren.
-
Super water!
Genau soetwas habe ich gesucht.......
Vielen Dank!
-
Danke, schaue ich mir mal an.
-
Zitat
Der Benutzer oder das Skript?
Der Benutzer!
So würde es funktionieren!
$SaveAsMail = D:\Testmail
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders", "Personal", "REG_EXPAND_SZ", $SaveAsMail)
local $Mail = _OL_ItemSave($oOutlook, $oItem, Default, $SaveAsMail & $Betreff & ".msg", $olMSGUnicode)
$Mail.Display
Mail öffnet, kann beschrieben werden, dann mit "speichern unter" speichern und versenden.
Cool wäre es, wenn die Mail beim versenden automatisch gespeichert ( $SaveAsMail ) wird, dass ist aber meines Wissens nicht möglich, oder?
Deshalb wollte ich sie mit ShellexecuteWait öffnen, Text schreiben, versenden und mit dem Skript abspeichern.
-
Zitat
Das ginge auch mit $oMail.Display.
Das weiß ich, aber dann kann ich die gespeicherte Datei nach dem Befüllen nicht wieder abspeichern, sondern nur die göffnete Datei.
Der Hintergrund ist der, die mit _OL_ItemSave gespeicherte Datei öffnen, mit Text Befüllen, speichern und versenden.
-
water: Nein, die _OL_ItemSave Funktion funktioniert super.
Ich öffne nach dem _OL_ItemSave Vorgang gleich die Datei mit ShellExecuteWait.
Habe das Problem gefunden. Wenn Outlook in der Taskleiste sichtbar noch göffnet ist, funktioniert ShellExecuteWait nicht.Kann es nur leider mit _OL_Close nicht schließen.
-
Leider nein!
Ich erzeuge die Datei mit der OutlookUDF,
_OL_ItemSave($oOutlook, $oItem, Default, $SaveAsMail & $Betreff & ".msg", $olMSGUnicode).
Speicher ich eine Datei direkt aus Outllook als Unicode *.msg Datei, funktioniert es.
-
Moin,
ShellExecuteWait funktioniert nicht mit Outlook Dateien mit Appendix *.msg.
Es öffnet die Datei, aber das Script wartet nicht.
Habt ihr eine Idee?
Gruß
Wuff
-
Zitat
Nun, ganz offensichtlich möchte er den Windowsstyle einer Anwendung ändern.
Ganz genau. Hab es gefunden. Mit dem Flag 4 funktioniert es.
Euch vielen Dank!
-
Moin,
Bei der Anwendung dieses Befehls "DllCall('uxtheme.dll', 'INT64', 'SetThemeAppProperties', 'int', 0)" lässt sich die GUI weder minimieren noch maximieren aber schließen.
Ich möchte die GUI natürlich auch minimieren können.
Könnt ihr mir helefen?
Gruß
Wuff