11 Commits

7 changed files with 449 additions and 263 deletions

View File

@ -158,15 +158,15 @@ Write:
Else If (Act = "1") ; Warrant Else If (Act = "1") ; Warrant
{ {
FileAppend,Händler rief an für Garantieübertragung`nAlte SN: `nNeue SN: `nAuthentisierungscode: `n`n, %docfile% FileAppend,Händler rief an für eine Garantieübertragung`nAlte SN: `nNeue SN: `nAuthentisierungscode: `n`n, %docfile%
} }
Else If (Act = "2") ; Demo Else If (Act = "2") ; Demo
{ {
FileAppend,Händler rief an für Demo`nSN: `nAuthentisierungscode: `n`n, %docfile% FileAppend,Händler rief an für eine Demo`nSN: `nAuthentisierungscode: `n`n, %docfile%
} }
} }
} }
ExitApp ExitApp
} }

470
D3K.ahk
View File

@ -1,6 +1,7 @@
#Include, func.ahk #Include, func.ahk
Menu, Tray, Icon, shell32.dll, 283 ; Set the tray icon to a keyboard Menu, Tray, Icon, shell32.dll, 283 ; Set the tray icon to a keyboard
Menu, Tray, Add, MouseMover ; Add item to tray icon right click for mouse mover
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
; Make sure the settings file exists, if not, create it ; Make sure the settings file exists, if not, create it
@ -61,115 +62,134 @@ ger := ini_get(ini, "Language", "German")
If (glovar = 1) If (glovar = 1)
{ {
glovarini := A_MyDocuments "\GloVar.ini" ; Location of the ini that the user modifies glovarini := A_MyDocuments "\GloVar.ini" ; Location of the ini that the user modifies
glovarstart := "#SingleInstance force`n`n:*:$dorg::`n:*:$dus::`n:*:$dnm::`n:*:$dem::`n:*:$xid::`n" glovarstart := "#SingleInstance force`n`n:*:$dorg::`n:*:$dus::`n:*:$dnm::`n:*:$dem::`n:*:$xid::`n"
SetTimer, GloVar, 2000 ; Check every 2 seconds SetTimer, GloVar, 2000 ; Check every 2 seconds
GloVar: GloVar:
WinWaitNotActive, GloVar.ini ; So that we don't get any problems with the file on disk being out of date. I use VSCode with the "Save on lose focus" option on, YMMV WinWaitNotActive, GloVar.ini ; So that we don't get any problems with the file on disk being out of date. I use VSCode with the "Save on lose focus" option on, YMMV
FileGetTime, gvModNew, %glovarini%
if !(gvModNew = gvMod) ; Those two lines mean the rest of this only executes if there were changes to the ini.
{ {
FileGetTime, gvModNew, %glovarini% gvMod := gvModNew
if !(gvModNew = gvMod) ; Those two lines mean the rest of this only executes if there were changes to the ini. FileDelete, glovar.ahk ; Start with a clean slate
FileAppend, %glovarstart%, glovar.ahk ; makes sure we only have one instance of the script running at a time
RESection := "" ; Make sure that its clear
file := FileOpen(glovarini, "r")
Loop ; Read one line at a time
{ {
gvMod := gvModNew Line := file.ReadLine()
FileDelete, glovar.ahk ; Start with a clean slate RegExMatch(Line, "(?<=\[).*(?=\])", RESection) ; explained above
FileAppend, %glovarstart%, glovar.ahk ; makes sure we only have one instance of the script running at a time RegExMatch(Line, "^(?<Key>.*)=(?<Value>.*)", RE) ; Key = REKey, Value = REValue
RESection := "" ; Make sure that its clear If (RESection && InStr(StoredSection := RESection, "clear")) ; Found a clear section
file := FileOpen(glovarini, "r")
Loop ; Read one line at a time
{ {
Line := file.ReadLine() ; Will clear the ini and save its and the documentation file's contents to a log
RegExMatch(Line, "(?<=\[).*(?=\])", RESection) ; explained above FileRead, doctemp, %docfile% ; Read documentation file, set in settings
RegExMatch(Line, "^(?<Key>.*)=(?<Value>.*)", RE) ; Key = REKey, Value = REValue FileRead, initemp, %glovarini% ; Read the ini
initemp := RegExReplace(initemp, "(?<=\[)clear(?=\])", "Info") ; Replace the "clear" section we set with Info
If !(RESection) ; If the RegEx doesn't find antything, its empty CurrTime := GetDateTime("en") ; get the current date and time as "YYYY-MM-DD at HH:MM GMT"
writethis := "Case on " . CurrTime . "`n" . doctemp . "`n`n" . initemp ; Save the current time, what was in the doc file, and glovarini to a variable
FileAppend, % "`n`n`n`n" writethis "`n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~", %A_MyDocuments%/D3KLog.txt ; Write a few new lines , the content, and a line underneath
FileAppend,, temptemp
FileCopy, glovarsource, %glovarini%, 1 ; Copies and replaces any text in glovar.ini with the template
FileCopy, temptemp, %docfile%, 1 ; These two this close together makes it look like they get cleared at the same time
FileDelete, temptemp
fileread, gvMod, %glovarini% ; Make sure that this script knows what the ini was changed to so it doesn't constantly run through the above code
FileDelete, glovar.ahk ; THE CLEAN SLATE
FileAppend, %glovarstart%, glovar.ahk
Sleep, 500
FileGetTime, gvMod, %glovarini% ; Make sure that this script knows what the ini was changed to so it doesn't constantly run through the above code
If FileExist("glovar.ahk")
{ {
If !(REValue) ; If there is no value for the key, skip it (Continue the loop at the next line) Run glovar.ahk
}
Return
} else if (RESection) { ; found a different section
StoredSection := RESection
continue
}
If !(RESection) ; If the RegEx doesn't find antything, its empty
{
If !(REValue) ; If there is no value for the key, skip it (Continue the loop at the next line)
{
Continue
}
If InStr(StoredSection, "Serial Numbers") ; If the section is "Serial Numbers", make everything uppercase
{
StringUpper, REValue, REValue ; Makes it uppercase
WinWaitNotActive, GloVar.ini ; Just to make sure
ini_write(glovarini, REKey, REValue)
FileGetTime, gvMod, %glovarini%
MsgBox, test
}
If InStr(StoredSection, "Operations Center") ; If the section is "Operations Center" and the Key "un", make it uppercase
{
If InStr(REKey, "usr")
{ {
StringUpper, REValue, REValue ; Makes it uppercase
WinWaitNotActive, GloVar.ini
ini_write(glovarini, REKey, REValue) ; Writes the properly formatted case number to glovar.ini
FileGetTime, gvMod, %glovarini%
}
}
If InStr(REKey, "case") ; If a key contains "case". Case numbers are all in the format "LETTERS-NUMBERS".
{
StringUpper, REValue, REValue ; Makes it uppercase
RegExMatch(REValue, "(?<=\().*(?=\))", REMatch) ; Match everything but the parenthesis. When the case numbers are shown they have parenthesis, and those are annoying.
If (REMatch) ; If there's anything there
{
WinWaitNotActive, GloVar.ini
ini_write(glovarini, REKey, REMatch) ; Writes the properly formatted case number to glovar.ini
FileGetTime, gvMod, %glovarini%
REValue := REMatch
} Else {
WinWaitNotActive, GloVar.ini
ini_write(glovarini, REKey, REValue) ; Writes the properly formatted case number to glovar.ini
FileGetTime, gvMod, %glovarini%
}
}
If InStr(REKey, "xid") ; If an xID is entered. Unique identifier for people
{
dealinfo := GetInfo(REValue) ; Gets information, see function for details
StringUpper, REValue, REValue ; Makes xID uppercase
if !(REValue = dealinfo.xid)
{
run addemail.ahk
Continue Continue
} }
If InStr(StoredSection, "Serial Numbers") ; If the section is "Serial Numbers", make everything uppercase ; Replace the data in glovar.ahk with the data from the ini
{ FileRead, tempglovar, glovar.ahk
StringUpper, REValue, REValue ; Makes it uppercase tempglovar := RegExReplace(tempglovar, "(?<=\$xid::).*", dealinfo.xid)
WinWaitNotActive, GloVar.ini ; Just to make sure tempglovar := RegExReplace(tempglovar, "(?<=\$dem::).*", dealinfo.email)
{ tempglovar := RegExReplace(tempglovar, "(?<=\$dnm::).*", dealinfo.name)
ini_write(glovarini, REKey, REValue) tempglovar := RegExReplace(tempglovar, "(?<=\$dus::).*", dealinfo.user)
FileGetTime, gvMod, %glovarini% tempglovar := RegExReplace(tempglovar, "(?<=\$dorg::).*", dealinfo.org)
} FileAppend, %tempglovar%, tempglovar
} FileCopy, tempglovar, glovar.ahk,1
If InStr(StoredSection, "Operations Center") ; If the section is "Operations Center" and the Key "un", make it uppercase FileDelete, tempglovar
{ WinWaitNotActive, GloVar.ini
If InStr(REKey, "usr") ini_write(glovarini, "xID", dealinfo.xid) ; Writes the xID
{ ini_write(glovarini, "dem", dealinfo.email) ; Writes email address (incredibly useful)
StringUpper, REValue, REValue ; Makes it uppercase ini_write(glovarini, "dnm", dealinfo.name) ; Writes Name (useful for when referring to that person)
WinWaitNotActive, GloVar.ini ini_write(glovarini, "dus", dealinfo.user) ; Writes demo account name (somewhat useful)
{ ini_write(glovarini, "dorg", dealinfo.org)
ini_write(glovarini, REKey, REValue) ; Writes the properly formatted case number to glovar.ini FileGetTime, gvMod, %glovarini% ; Make sure that this script knows what the ini was changed to so it doesn't constantly run through the above code
FileGetTime, gvMod, %glovarini% Continue
}
}
}
If InStr(REKey, "case") ; If a key contains "case". Case numbers are all in the format "LETTERS-NUMBERS".
{
StringUpper, REValue, REValue ; Makes it uppercase
RegExMatch(REValue, "(?<=\().*(?=\))", REMatch) ; Match everything but the parenthesis. When the case numbers are shown they have parenthesis, and those are annoying.
If (REMatch) ; If there's anything there
{
WinWaitNotActive, GloVar.ini
{
ini_write(glovarini, REKey, REMatch) ; Writes the properly formatted case number to glovar.ini
FileGetTime, gvMod, %glovarini%
}
REValue := REMatch
} Else {
WinWaitNotActive, GloVar.ini
{
ini_write(glovarini, REKey, REValue) ; Writes the properly formatted case number to glovar.ini
FileGetTime, gvMod, %glovarini%
}
}
}
writethis := ":*:$" REKey "::" REValue "`n" ; Save the hotstring to a variable
FileAppend, %writethis%, glovar.ahk ; Write the variable to glovar.ahk
} }
If (RESection) ; If we have a section If (InStr(REKey, "dem") or InStr(REKey, "dnm") or InStr(REKey, "dus"))
{ {
StoredSection := RESection ; Do not process xID related info, that is done above
If InStr(RESection, "clear") ; Will clear the ini and save its and the documentation file's contents to a log Continue
{
FileRead, doctemp, %docfile% ; Read documentation file, set in settings
FileRead, initemp, %glovarini% ; Read the ini
initemp := RegExReplace(initemp, "(?<=\[)clear(?=\])", "Info") ; Replace the "clear" section we set with Info
CurrTime := GetDateTime("en") ; get the current date and time as "YYYY-MM-DD at HH:MM GMT"
writethis := "Case on " . CurrTime . "`n`n`n" . doctemp . "`n`n" . initemp ; Save the current time, what was in the doc file, and glovarini to a variable
FileAppend, % "`n`n" writethis "`n`n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~", %A_MyDocuments%/D3KLog.txt ; Write a few new lines , the content, and a line underneath
FileAppend,, temptemp
FileCopy, glovarsource, %glovarini%, 1 ; Copies and replaces any text in glovar.ini with the template
FileCopy, temptemp, %docfile%, 1 ; These two this close together makes it look like they get cleared at the same time
FileDelete, temptemp
fileread, gvMod, %glovarini% ; Make sure that this script knows what the ini was changed to so it doesn't constantly run through the above code
FileDelete, glovar.ahk ; THE CLEAN SLATE
FileAppend, %glovarstart%, glovar.ahk
Sleep, 500
FileGetTime, gvMod, %glovarini% ; Make sure that this script knows what the ini was changed to so it doesn't constantly run through the above code
If FileExist("glovar.ahk")
{
Run glovar.ahk
}
Return
}
} }
} Until (file.AtEOF) writethis := ":*:$" REKey "::" REValue "`n" ; Save the hotstring to a variable
file.Close() FileAppend, %writethis%, glovar.ahk ; Write the variable to glovar.ahk
FileGetTime, gvMod, %glovarini% ; Make sure that this script knows what the ini was changed to so it doesn't constantly run through the above code
If FileExist("glovar.ahk")
{
Run glovar.ahk
} }
} Until (file.AtEOF)
file.Close()
FileGetTime, gvMod, %glovarini% ; Make sure that this script knows what the ini was changed to so it doesn't constantly run through the above code
If FileExist("glovar.ahk")
{
Run glovar.ahk
} }
} }
Return Return
@ -182,6 +202,9 @@ If (glovar = 1)
!+\::Run Settings.ahk ; Alt+Shift+\ !+\::Run Settings.ahk ; Alt+Shift+\
MouseMover:
Run, msmv.ahk
Return
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
; DTAC Solution Opener ; DTAC Solution Opener
@ -200,6 +223,25 @@ If (glovar = 1)
Pause::Run Case_Formatter.ahk ; The Pause|Break key Pause::Run Case_Formatter.ahk ; The Pause|Break key
#If #If
; These things below are for using in a pinch, or when there is no dealer.
SetTitleMatchMode, 2
#If (WinActive = Temp.txt) && (CaseFormatter = "1")
:*:\case::
CurrTime := GetDateTime("en")
Send Call received on %CurrTime% {Enter}Name: {Enter}Username: {Enter}
Return
#If
;German
#If (CaseFormatter = "1") && (ger = "1")
:*:|case::
CurrTime := GetDateTime("de")
Send Anruf wurde am %CurrTime% entgegengenommen{Enter}Name: {Enter}Benutzername: {Enter}
Return
#If
;------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------
; Special Characters ; Special Characters
@ -280,11 +322,86 @@ If (glovar = 1)
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
; Copypastas ; Copypastas
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
;STWA Applied
:*:]cms:: ; Recommending case
Send Notes:{Space}{Enter}Explanation:{Space}{Enter}Flowdock:{Space}{Enter 2}Thank you,{Enter}%name%{Enter 2}Tier 2 internal steps:{Space}{CtrlDown}{Home}{CtrlUp}{End} :*:]rec::
Send Recommending Case, please contact us if there are any further questions.
Return Return
; Escalatimg Case
:*:]esc1::
Send This case was unable to be resolved and has been transferred to another team. Our Tier 2 team is investigating the issue to find a short term resolution. We will update you as soon as we have a recommendation.
Return
:*:]esc2::
Send A short term resolution still has not been identified. We are requesting an immediate update on this case from our Tier 2 team. We will contact you as soon as we have a status update.
Return
; Requesting info
:*:]req1::
Send A request has been made for additional information in this case. Please provide the information as soon as possible so that the case can be resolved.
Return
:*:]req2::
Send A follow-up request has been made for the additional information.
Return
:*:]req3::
Send The additional information required has not yet been received. This case will now be sent back to you. Please reopen the case, or contact the Global Support Center again via phone or email with the additional information and reference this case number so that it can be reopened and investigated further.
Return
; Defect / NCCA
:*:]ncca::
Send We will be recommending this case back to you for the time being. This issue is still being investigated and worked on via an internal product corrective action ticket. We will continue to monitor the progress of that ticket and contact you when we have a solution or a short term recommendation. The case text will be updated at that time for documentation purposes.{Enter}You may choose to close this case yourself, return it to us, or keep it open until we provide you with a corrective action recommendation. If you have questions on the status of this issue, please re-open the case or contact the Global Support Center using the contact information found in DTAC solution 82793. We will provide you with any information we are able to gather from the product team.
Return
; DTAC
:*:]dtac::
Send The ISG Global Support Center has determined that this case is hardware related; therefore this case is being transferred from the GSC to the ISG DTAC group. A DTAC technician will now work this case via the CCMS system and provide a recommendation in the case text if more information is needed or if a solution has been found. Please continue to update or check on the progress of this case by using the CCMS system case text section moving forward.
Return
; German
#If, ger = "1"
; Recommending Case
:*:[rec::
Send Fall an H{U+00E4}ndler gewiesen, bitte melden Sie sich wenn sie weitere fragen haben.
Return
; Escalating Case
:*:[esc1::
Send Der Fall konnte vom GSC nicht gelöst werden und wurde an die nächste Supportebene weitergeleitet. Das Support Team wird das Problem weiter untersuchen und versuchen eine kurzfristige Lösung bereit zu stellen. Sobald wir eine Empfehlung erhalten, werden wir Sie darüber informieren.
Return
:*:[esc2::
Send Bisher steht uns keine kurzfristige Lösung zur Verfügung. Wir fordern umgehend ein Status-Update bezüglich des Falls von unserem Support Team an.{Shift down}{Enter}{Shift up}Wir werden Sie erneut kontaktieren, sobald wir über den aktuellsten Stand des Falls informiert sind.
Return
; Requesting info
:*:[req1::
Send Wir haben zusätzliche Informationen von Ihnen bezüglich des Falls angefordert. Bitte stellen Sie uns die Informationen so bald wie möglich zur Verfügung, damit der Fall gelöst werden kann.
Return
:*:[req2::
Send Wir fordern die zusätzlichen Informationen von Ihnen erneut an.
Return
:*:[req3::
Send Wir haben die benötigten zusätzlichen Informationen von Ihnen noch nicht erhalten. Dieser Fall wird jetzt zu Ihnen zurückgeschickt. Bitte setzen Sie sich mit dem GSC telefonisch oder per Email mit den zusätzlichen Informationen nochmal in Verbindung und referenzieren Sie die Fallnummer, damit der Fall erneut geöffnet und weiter untersucht werden kann.
Return
; Defect / NCCA
:*:[ncca::
Send Wir werden diesen Fall vorübergehend an Sie zurückweisen. Dieses Problem wird noch über ein innenseitiges Produkt Korrektur Ticket bearbeitet. Wir werden weiterhin den Fortschritt dieses Tickets verfolgen und mit Ihnen Kontakt aufnehmen, wenn wir eine Lösung oder eine kurzfristige Empfehlung haben.{Enter}Sie können diesen Fall selbst schließen, an uns zurückzugeben oder offen halten, bis wir Ihnen eine Korrekturmaßnahme empfehlen. Wenn Sie Fragen zum Fall Status haben wenden Sie sich an das Global Support Center, indem Sie die Kontaktinformationen in der DTAC-Lösung 82793 abrufen. Wir werden Ihnen alle Informationen, die wir von dem Produktteam bekommen haben, zu Verfügung stellen.
Return
; DTAC
:*:[dtac::
Send Das ISG Global Support Center hat festgestellt, dass dieser Fall hardwarebezogen ist; Daher wird dieser Fall vom GSC an die ISG DTAC Gruppe übertragen. Ein DTAC-Techniker wird nun diesen Fall über das DTAC-System bearbeiten und eine Empfehlung im Fall Text geben, wenn weitere Informationen benötigt werden oder wenn eine Lösung gefunden wurde. Dementsprechend bitten wir Sie, den Fortschritt des Falls mithilfe des Falltextes zu überprüfen und falls nötig mit fehlenden Informationen zu ergänzen.
Return
#If
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
; Email ; Email
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
@ -363,108 +480,113 @@ If (glovar = 1)
; English ; English
:*:]at::AutoTrac :*:]at::AutoTrac
:*:]sf::StarFire :*:]bin::Virtual Inventory
:*:]jdlw::JDLink Web
:*:]jdld::JDLink Dashboard
:*:]jdl2::JDLink Dashboard 2.0
:*:]jdlc::JDLink Connect
:*:]jdla::JDLink Access
:*:]jdls::JDLink Subscription
:*:]jdll::JDLink
:*:]jdp::JDParts
:*:]mjd::MyJohnDeere
:*:]opsc::Operations Center
:*:]seccon::Section Control
:*:]gs::GreenStar
:*:]cc::CommandCenter :*:]cc::CommandCenter
:*:]deg::{ASC 248}
:*:]eq::{ASC 247}
:*:]fc::Field Connect :*:]fc::Field Connect
:*:]rs::RowSense :*:]gs::GreenStar
:*:]sub::subscription :*:]gp::GSC-Prepared
:*:]ss::Stellar Support
:*:]tman::Technical Manual
:*:]oman::Operator's Manual
:*:]hl3::HarvestLab 3000 :*:]hl3::HarvestLab 3000
:*:]hlo::Original HarvestLab :*:]hlo::Original HarvestLab
:*:]bin::Virtual Inventory
:*:]warrep::Warranty Reports
:*:]tp::TouchPoint
:*:]tcsm::Territory Customer Support Manager
:*:]macrep::Machine Reports
:*:]jdsm::John Deere Software Manager
:*:]jddm::John Deere Data Manager :*:]jddm::John Deere Data Manager
:*:]serva::Service Advisor :*:]jdl2::JDLink Dashboard 2.0
:*:]jdla::JDLink Access
:*:]jdlc::JDLink Connect
:*:]jdld::JDLink Dashboard
:*:]jdll::JDLink
:*:]jdls::JDLink Subscription
:*:]jdlw::JDLink Web
:*:]jdp::JDParts
:*:]jdsm::John Deere Software Manager
:*:]macrep::Machine Reports
:*:]mjd::MyJohnDeere
:*:]muc::Master Unlock Code :*:]muc::Master Unlock Code
:*:]asmn::Asset Manager :*:]oman::Operator's Manual
:*:]opsc::Operations Center
:*:]rs::RowSense
:*:]seccon::Section Control
:*:]serva::Service Advisor
:*:]sf::StarFire
:*:]ss::Stellar Support
:*:]sub::subscription
:*:]tcsm::Territory Customer Support Manager
:*:]tman::Technical Manual
:*:]tp::TouchPoint
:*:]warrep::Warranty Reports
:*:mtg::MTG
::rowsense::RowSense :*:racf::RACF
::comar::COMAR :*:vin::VIN
::mrtk::mRTK ::atu::ATU
::rda::RDA
::rtk::RTK
::autotrac::AutoTrac ::autotrac::AutoTrac
::ccms::CCMS ::ccms::CCMS
::comar::COMAR
::dtac::DTAC ::dtac::DTAC
::tcsm::TCSM
::itec::iTEC Pro
::ssu::SSU
::atu::ATU
:*:mtg::MTG
::wdt::WDT
::itc::iTC
:*:vin::VIN
::gs2::GS2 ::gs2::GS2
::gs3::GS3 ::gs3::GS3
::igrade::iGrade
::itc::iTC
::itec::iTEC Pro
::mrtk::mRTK
::pmcalc::PMCalc
::rda::RDA
::rowsense::RowSense
::rtk::RTK
::sf1::SF1 ::sf1::SF1
::sf2::SF2 ::sf2::SF2
::sf3::SF3 ::sf3::SF3
::sf4::SF4 ::sf4::SF4
::xid::xID ::ssu::SSU
::pmcalc::PMCalc ::tcsm::TCSM
::vat::VAT ::vat::VAT
:*:racf::RACF ::wdt::WDT
::igrade::iGrade ::xid::xID
; German ; German
#If, ger = "1" #If, ger = "1"
:*:[at::AutoTrac :*:[at::AutoTrac
:*:[sf::StarFire :*:[bin::Virtuellen Bestand
:*:[jdlw::JDLink Web
:*:[jdld::JDLink Dashboard
:*:[jdl2::JDLink Dashboard 2.0
:*:[jdlc::JDLink Connect
:*:[jdla::JDLink Access
:*:[jdls::JDLink Abonnement
:*:[jdll::JDLink
:*:[jdp::JDParts
:*:[mjd::MyJohnDeere
:*:[opsc::Einsatzzentrale
:*:[seccon::Teilbreitensteuerung
:*:[gs::GreenStar
:*:[cc::CommandCenter :*:[cc::CommandCenter
:*:[deg::{ASC 248}
:*:[eq::{ASC 247}
:*:[fc::Field Connect :*:[fc::Field Connect
:*:[rs::RowSense :*:[gs::GreenStar
:*:[sub::Abonnement :*:[gp::GSC-Prepared
:*:[ss::Stellar Support
:*:[tman::Technische Betriebsanleitung
:*:[oman::Betriebsanleitung
:*:[hl3::HarvestLab 3000 :*:[hl3::HarvestLab 3000
:*:[hlo::Originales HarvestLab :*:[hlo::Originales HarvestLab
:*:[bin::Virtuellen Bestand
:*:[warrep::Warranty Reports
:*:[tp::TouchPoint
:*:[tcsm::Technischer Bezirksleiter
:*:[macrep::Machine Reports
:*:[jdsm::John Deere Software Manager
:*:[jddm::John Deere Data Manager :*:[jddm::John Deere Data Manager
:*:[serva::Service Advisor :*:[jdl2::JDLink Dashboard 2.0
:*:[jdla::JDLink Access
:*:[jdlc::JDLink Connect
:*:[jdld::JDLink Dashboard
:*:[jdll::JDLink
:*:[jdls::JDLink Abonnement
:*:[jdlw::JDLink Web
:*:[jdp::JDParts
:*:[jdsm::John Deere Software Manager
:*:[macrep::Machine Reports
:*:[mjd::MyJohnDeere
:*:[muc::Master Unlock Code :*:[muc::Master Unlock Code
:*:[asmn::Asset Manager :*:[oman::Betriebsanleitung
:*:[opsc::Einsatzzentrale
:*:[rs::RowSense
:*:[seccon::Teilbreitensteuerung
:*:[serva::Service Advisor
:*:[sf::StarFire
:*:[ss::Stellar Support
:*:[sub::Abonnement
:*:[tcsm::Technischer Bezirksleiter
:*:[tman::Technische Betriebsanleitung
:*:[tp::TouchPoint
:*:[warrep::Warranty Reports
#If #If
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
; QoL Improvements ; QoL Improvements
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
@ -485,21 +607,3 @@ if WinActive("ahk_exe Explorer.EXE") ; If windows explorer is focused
} }
Run, C:\Users\%racf%\Documents Run, C:\Users\%racf%\Documents
Return Return
:*:[deg::{ASC 248}
:*:]deg::{ASC 248}
:*:[eq::{ASC 247}
:*:]eq::{ASC 247}
:*:[shrug::¯\_()_/¯
:*:]shrug::¯\_()_/¯
::]yee::
yee()
{
asc_yee := ["░░░░░░░░░░░░░▄███▄▄▄░░░░░░░","░░░░░░░░░▄▄▄██▀▀▀▀███▄░░░░░","░░░░░░░▄▀▀░░░░░░░░░░░▀█░░░░","░░░░▄▄▀░░░░░░░░░░░░░░░▀█░░░","░░░█░░░░░▀▄░░▄▀░░░░░░░░█░░░","░░░▐██▄░░▀▄▀▀▄▀░░▄██▀░▐▌░░░","░░░█▀█░▀░░░▀▀░░░▀░█▀░░▐▌░░░","░░░█░░▀▐░░░░░░░░▌▀░░░░░█░░░","░░░█░░░░░░░░░░░░░░░░░░░█░░░","░░░░█░░▀▄░░░░▄▀░░░░░░░░█░░░","░░░░█░░░░░░░░░░░▄▄░░░░█░░░░","░░░░░█▀██▀▀▀▀██▀░░░░░░█░░░░","░░░░░█░░▀████▀░░░░░░░█░░░░░","░░░░░░█░░░░░░░░░░░░▄█░░░░░░","░░░░░░░██░░░░░█▄▄▀▀░█░░░░░░","░░░░░░░░▀▀█▀▀▀▀░░░░░░█░░░░░", "yee ░░░░░█░░░░░░░░░░░░█░░░░"]
For index, value in asc_yee
{
SendInput, %value%{ShiftDown}{Enter}{ShiftUp}
}
}

View File

@ -1,33 +1,33 @@
#SingleInstance force ; Only one instance at a time #SingleInstance force ; Only one instance at a time
SendMode, Input SendMode, Input
FileEncoding, UTF-8 ; Makes sure the special characters don't break stuff FileEncoding, UTF-8 ; Makes sure the special characters don't break stuff
Menu, Tray, Icon, %A_MyDocuments%\D3K\icons\manual.ico Menu, Tray, Icon, %A_MyDocuments%\D3K\icons\manual.ico
Gui, +AlwaysOnTop +ToolWindow Gui, +AlwaysOnTop +ToolWindow
Gui, Add, Edit, x2 y3 w78 h20 vNumber +Left, Gui, Add, Edit, x2 y3 w78 h20 vNumber +Left,
Gui, Add, Button, x22 y43 w70 h20 Default vHidden, Ok Gui, Add, Button, x22 y43 w70 h20 Default vHidden, Ok
Gui, Add, Button, x81 y3 w17 h20 gHelp +Center, ? Gui, Add, Button, x81 y3 w17 h20 gHelp +Center, ?
Gui, Show, h28 w100, ManSol Gui, Show, h28 w100, ManSol
GuiControl, Hide, Hidden GuiControl, Hide, Hidden
Return Return
ButtonOk: ButtonOk:
Gui, submit ; I have no idea what the regex means any more... Gui, submit ; I have no idea what the regex means any more...
If RegExMatch(Number, "[[:alpha:]]+") If RegExMatch(Number, "[[:alpha:]]+")
run, % "http://serviceadvisor.deere.com/WebSA/manuals/" . Number run, % "http://serviceadvisor.deere.com/WebSA/manuals/" . Number
Else If RegExMatch(Number, "[[:digit:]]+") Else If RegExMatch(Number, "[[:digit:]]+")
run, % "https://ccms.deere.com/prweb/PRServletCustomAuth/ZDate_MgiNPn1ccL6O6pyBurDs0hjFQ8*/!STANDARD?pyActivity=SolutionsSnapStart&Action=showHarness&className=Deere-Int-Solr-Docs&Purpose=SolutionDescriptionNew&SolutionID=" . Number . "&Language=Default" run, % "https://serviceadvisor.deere.com/WebSA/solutions/en/" . Number
ExitApp ExitApp
Return Return
Help: Help:
MsgBox, 262176, Maual & Solution opener, Input the TM/OM SKU (easily ofund on TechPubs) or the DTAC solution number to open it in your default browser.`nTMs & OMs open in Service Advisor. MsgBox, 262176, Maual & Solution opener, Input the TM/OM SKU (easily ofund on TechPubs) or the DTAC solution number to open it in your default browser.`nTMs & OMs open in Service Advisor.
Return Return
GuiClose: GuiClose:
GuiEscape: GuiEscape:
ExitApp ExitApp

View File

@ -11,6 +11,7 @@ This is the part that reads the file to see what your settings are. Variables in
; User Specific things: ; User Specific things:
racf := ini_get(ini, "USpec", "RACF") racf := ini_get(ini, "USpec", "RACF")
email := ini_get(ini, "USpec", "Email") email := ini_get(ini, "USpec", "Email")
name := ini_get(ini, "USpec", "Name")
docfile := ini_get(ini, "USpec", "DocFile") docfile := ini_get(ini, "USpec", "DocFile")
; General Settings ; General Settings
@ -34,18 +35,22 @@ Gui, -MaximizeBox -MinimizeBox ; Remove the max+min buttons
Gui, Add, GroupBox, x8 y2 w67 h37, RACF Gui, Add, GroupBox, x8 y2 w67 h37, RACF
Gui, Add, Edit, x12 y15 w60 h20 vformRACF gRACF, %RACF% Gui, Add, Edit, x12 y15 w60 h20 vformRACF gRACF, %RACF%
Gui, Add, GroupBox, x85 y2 w200 h37, First Name
Gui, Add, Edit, x89 y15 w193 h20 vformName gName, %Name%
Gui, Add, GroupBox, x8 y40 w207 h37, Email Address Gui, Add, GroupBox, x8 y40 w207 h37, Email Address
Gui, Add, Edit, x12 y53 w200 h20 vformEmail gEmail, %Email% Gui, Add, Edit, x12 y53 w200 h20 vformEmail gEmail, %Email%
Gui, Add, GroupBox, x77 y2 w207 h37, Documentation File
Gui, Add, Text, x81 y19 w200 h20 gDocFile, %docfile%
Gui, Add, GroupBox, x8 y83 w107 h130, Main Gui, Add, GroupBox, x8 y83 w107 h130, Main
Gui, Add, CheckBox, x12 y95 w100 h30 vformMansol Checked%mansol% gMansol, ManSol Gui, Add, CheckBox, x12 y95 w100 h30 vformMansol Checked%mansol% gMansol, ManSol
Gui, Add, CheckBox, x12 y125 w100 h30 vformMJDPaste Checked%mjdpaste% gMJDPaste, MJDPaste Gui, Add, CheckBox, x12 y125 w100 h30 vformMJDPaste Checked%mjdpaste% gMJDPaste, MJDPaste
Gui, Add, CheckBox, x12 y155 w100 h30 vformCaseFormatter Checked%caseformatter% gCaseFormatter, Case Formatter Gui, Add, CheckBox, x12 y155 w100 h30 vformCaseFormatter Checked%caseformatter% gCaseFormatter, Case Formatter
Gui, Add, CheckBox, x25 y178 w75 h30 vformCFmail Checked%cfmail% gCFmail, Email option Gui, Add, CheckBox, x25 y178 w75 h30 vformCFmail Checked%cfmail% gCFmail, Email option
GuiControl, show%caseformatter%, formCFmail ; only shows the check box for emails if the Case Formatter box is checked GuiControl, show%caseformatter%, formCFmail ; only shows the check box for emails if the Case Formatter box is checked
Gui, Add, GroupBox, x8 y215 w277 h40 vformDocFile, Documentation File
Gui, Add, Text, x15 y231 w260 h20 vformDocFile2 gDocFile, %docfile%
GuiControl, show%caseformatter%, formDocFile ; only shows the documentation file field if the Case Formatter box is checked
GuiControl, show%caseformatter%, formDocFile2
Gui, Add, GroupBox, x128 y83 w157 h75, Text Replacement Gui, Add, GroupBox, x128 y83 w157 h75, Text Replacement
Gui, Add, CheckBox, x132 y95 w150 h30 vformJdpn Checked%jdpn% gJdpn, JD Product Names Gui, Add, CheckBox, x132 y95 w150 h30 vformJdpn Checked%jdpn% gJdpn, JD Product Names
@ -54,7 +59,7 @@ Gui, Add, CheckBox, x132 y155 w100 h30 vformGer Checked%ger% gGer, DE ([ as pref
Gui, Add, Link, x132 y190 w150 h23 gHelp, <a href="https://daviddaily.dev/david/d3k/wiki">Click here for help</a> (v%d3k_version%) Gui, Add, Link, x132 y190 w150 h23 gHelp, <a href="https://daviddaily.dev/david/d3k/wiki">Click here for help</a> (v%d3k_version%)
Gui, Show, h225 w295, David 3000 Settings Gui, Show, h263 w295, David 3000 Settings
Return Return
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
@ -65,6 +70,7 @@ Default ini, sections are in []: (0 is off, 1 is on)
[USpec] [USpec]
RACF=LF01234 RACF=LF01234
Email=LastnameFirstname@JohnDeere.com Email=LastnameFirstname@JohnDeere.com
Name=Firstname
DocFile=Select File DocFile=Select File
[Main] [Main]
Mansol=1 Mansol=1
@ -88,6 +94,11 @@ RACF:
ini_write(ini, "RACF", formRACF) ini_write(ini, "RACF", formRACF)
Return Return
Name:
Gui, Submit, NoHide
ini_write(ini, "Name", formName)
Return
Email: Email:
Gui, Submit, NoHide Gui, Submit, NoHide
ini_write(ini, "Email", formEmail) ini_write(ini, "Email", formEmail)
@ -117,6 +128,8 @@ Return
CaseFormatter: CaseFormatter:
Gui, Submit, NoHide Gui, Submit, NoHide
GuiControl, show%formCaseFormatter%, formCFmail ; only shows the check box for emails if the Case Formatter box is checked GuiControl, show%formCaseFormatter%, formCFmail ; only shows the check box for emails if the Case Formatter box is checked
GuiControl, show%formCaseFormatter%, formDocFile
GuiControl, show%formCaseFormatter%, formDocFile2
GuiControl,, formCFmail, 0 GuiControl,, formCFmail, 0
ini_write(ini, "CaseFormatter", formCaseFormatter) ini_write(ini, "CaseFormatter", formCaseFormatter)
ini_write(ini, "CFmail", "0") ; if you're toggling this, its either on or off, doesn't hurt to set it here ini_write(ini, "CFmail", "0") ; if you're toggling this, its either on or off, doesn't hurt to set it here

View File

@ -8,4 +8,9 @@ VIN=
usr= usr=
org= org=
[Info] [Info]
ccms= case=
dorg=
dus=
dnm=
dem=
xID=

63
msmv.ahk Normal file
View File

@ -0,0 +1,63 @@
#SingleInstance, force
CoordMode, Mouse, Screen
waittime := 180000
Switch A_Args[1]
{
Case "on":
Menu, Tray, NoIcon
Goto, Start
Case "off":
ExitApp
}
Menu, Tray, Add, Hide GUI, GuiToggle ; Adds a button to toggle the gui
Menu, Tray, Add, Exit, GuiClose ; Exit button
Menu, Tray, NoStandard ; None of the standard tray buttons
Gui, +AlwaysOnTop +ToolWindow
Gui, Add, Button, x3 y3 w55 h20 gStart +Center, Start
Gui, Add, Button, x3 y3 w55 h20 gStop +Center, Stop
Gui, Show, h28 w60, msmv
GuiControl, Hide, Stop ; Since we want the Start button to show first
Return
Start:
GuiControl, Hide, Start
SetTimer, Msmv, %waittime% ; Checks if the has been input in the last 2 minutes every 30 secs, easier to stop a loop with SetTimer
GuiControl, Show, Stop
Return
Stop:
GuiControl, Hide, Stop
SetTimer, Msmv, off
GuiControl, Show, Start
Return
Msmv:
If (A_TimeIdle > waittime) ; https://www.autohotkey.com/docs/Variables.htm#User_Idle_Time
{
Random, x,, %A_ScreenWidth%
Random, y,, %A_ScreenHeight%
MouseMove %x%, %y%
}
Return
GuiToggle:
If !nogui
{
Gui, Hide
Menu, Tray, Check, Hide GUI
nogui := True
}
Else
{
Menu, Tray, uncheck, Hide GUI
nogui := False
Gui, Show
}
Return
GuiClose:
GuiEscape:
ExitApp ; Closes the app when escape or the exit button is pressed

View File

@ -1,40 +1,41 @@
#SingleInstance force #SingleInstance force
Menu, Tray, Add, Open Manual/Solution, gui
; The exe this is compiled into has manual.ico set as its icon.
; The exe this is compiled into has manual.ico set as its icon.
!+S::gui()
!+S::gui()
gui()
{ gui()
static Number {
static Hidden static Number
static Hidden
Gui, +AlwaysOnTop +ToolWindow
Gui, +AlwaysOnTop +ToolWindow
Gui, Add, Edit, x2 y3 w78 h20 vNumber +Left,
Gui, Add, Button, x22 y43 w70 h20 Default vHidden, Ok Gui, Add, Edit, x2 y3 w78 h20 vNumber +Left,
Gui, Add, Button, x81 y3 w17 h20 gHelp +Center, ? Gui, Add, Button, x22 y43 w70 h20 Default vHidden, Ok
Gui, Show, h28 w100, ManSol Gui, Add, Button, x81 y3 w17 h20 gHelp +Center, ?
GuiControl, Hide, Hidden Gui, Show, h28 w100, ManSol
GuiControl, Hide, Hidden
Return
Return
ButtonOk:
Gui, submit ; I have no idea what the regex means any more... ButtonOk:
If RegExMatch(Number, "[[:alpha:]]+") Gui, submit ; I have no idea what the regex means any more...
run, % "http://serviceadvisor.deere.com/WebSA/manuals/" . Number If RegExMatch(Number, "[[:alpha:]]+")
Else If RegExMatch(Number, "[[:digit:]]+") run, % "http://serviceadvisor.deere.com/WebSA/manuals/" . Number
run, % "https://ccms.deere.com/prweb/PRServletCustomAuth/ZDate_MgiNPn1ccL6O6pyBurDs0hjFQ8*/!STANDARD?pyActivity=SolutionsSnapStart&Action=showHarness&className=Deere-Int-Solr-Docs&Purpose=SolutionDescriptionNew&SolutionID=" . Number . "&Language=Default" Else If RegExMatch(Number, "[[:digit:]]+")
ExitApp run, % "https://serviceadvisor.deere.com/WebSA/solutions/en/" . Number
Return ExitApp
Return
Help:
Run, https://daviddaily.dev/david/d3k/wiki/ManSol Help:
Return Run, https://daviddaily.dev/david/d3k/wiki/ManSol-Opener-Standalone
Return
GuiClose:
GuiEscape: GuiClose:
Gui, Destroy GuiEscape:
Return Gui, Destroy
} Return
}