Download Pelles C here: http://www.pellesc.se
// Connect to the task service.
//hr = pService->Connect(_variant_t(), _variant_t(), _variant_t(), _variant_t());
hr = pService->lpVtbl->Connect(pService, v1, v2, v3, v4);
those variants are optional, but C compiler don't allow NULL for them.typedef struct names{
char AppPath[MAX_PATH];
char VBSTime[50];
char VBETime[50];
char TaskName[50];
char UserSTime[50];
char Message[50];
}names;
names name;
/****************************************************************************
* *
* Function: Create_Script_PS1 *
* *
* Purpose : create runnable Powershell script for task *
* *
* History : Date Reason *
* 01/31/25 Created John Z *
* *
* Globals :SYSTEMTIME dpst, SYSTEMTIME dpet; *
****************************************************************************/
void Create_Script_PS1(void)
{ int RetVal;
char FileName [MAX_PATH*2]={0};
FILE *p_file;
char buf2[4000]={0};
char *p_buf2;
p_buf2 = buf2; //wide char
strcpy(FileName,name.AppPath);
strcat(FileName,"scr1.ps1");
p_file = fopen(FileName,"wb+"); //For Binary Access Write
if (p_file == NULL)
{
snprintf(buf2,MAX_PATH*2,"Unable to open file.\r\nFilename: %s",FileName);
MessageBoxA( NULL, buf2, "File Access Error",
MB_OK | MB_ICONERROR | MB_TOPMOST);
return;
}
snprintf(p_buf2, 3999,"%s\x0D\x0A%s\x0D\x0A%s\x0D\x0A%s\x0D\x0A",
"$TriggerTypeTime = 1",
"$ActionTypeExec = 0",
"$service = New-Object -ComObject Schedule.Service",
"$service.Connect()"
);
RetVal = fwrite(p_buf2, sizeof(char), strlen(p_buf2), p_file);
snprintf(p_buf2, 3999,"%s\x0D\x0A%s\x0D\x0A%s\x0D\x0A",
"$rootFolder = $service.GetFolder(\"\\\")",
"$taskDefinition = $service.NewTask(0)",
"$taskDefinition.RegistrationInfo.Description = \"Start Alert at a certain time\""
);
RetVal = fwrite(p_buf2, sizeof(char), strlen(p_buf2), p_file);
fflush(p_file);
snprintf(p_buf2, 3999,"%s\x0D\x0A%s\x0D\x0A%s\x0D\x0A%s\x0D\x0A",
"$taskDefinition.RegistrationInfo.Author = \"CalendarZ\"",
"$taskDefinition.Principal.LogonType = 3",
"$taskDefinition.Settings.Enabled = $true",
"$taskDefinition.Settings.StartWhenAvailable = $true"
);
RetVal = fwrite(p_buf2, sizeof(char), strlen(p_buf2), p_file);
snprintf(p_buf2, 3999,"%s\x0D\x0A%s\x0D\x0A%s\x0D\x0A%s\x0D\x0A",
"$taskDefinition.Settings.Hidden = $false",
"$taskDefinition.Settings.DeleteExpiredTaskAfter = \"PT10M\"",
"$triggers = $taskDefinition.Triggers",
"$trigger = $triggers.Create($TriggerTypeTime)"
);
RetVal = fwrite(p_buf2, sizeof(char), strlen(p_buf2), p_file);
fflush(p_file);
snprintf(p_buf2, 3999,"%s'%s'\x0D\x0A%s'%s'\x0D\x0A%s\x0D\x0A%s\x0D\x0A",
"$startTime = ",name.VBSTime,
"$endTime = ",name.VBETime,
"$trigger.StartBoundary = $startTime",
"$trigger.EndBoundary = $endTime"
);
RetVal = fwrite(p_buf2, sizeof(char), strlen(p_buf2), p_file);
fflush(p_file);
snprintf(p_buf2, 3999,"%s\x0D\x0A%s\x0D\x0A%s\"%s%s\"\x0D\x0A",
"$actions = $taskDefinition.Actions",
"$action = $actions.Create($ActionTypeExec)",
"$action.Path = ",
name.AppPath,
"Alert.exe"
);
RetVal = fwrite(p_buf2, sizeof(char), strlen(p_buf2), p_file);
snprintf(p_buf2, 3999,"%s%s -%s\"\x0D\x0A",
"$Action.Arguments = \"-",
name.UserSTime,
name.Message
);
RetVal = fwrite(p_buf2, sizeof(char), strlen(p_buf2), p_file);
snprintf(p_buf2, 3999,"%s\x0D\x0A%s,\x0D\x0A%s\x0D\x0A%s\x0D\x0A%s\x0D\x0A%s\x0D\x0A%s\x0D\x0A%s\x0D\x0A)",
"$rootFolder.RegisterTaskDefinition(",
name.TaskName,
" $taskDefinition,",
" 6, # Task creation flag (6 = CREATE_OR_UPDATE)",
" $null, # User",
" $null, # Password",
" $null, # Logon type",
" $null # SDDL"
);
RetVal = fwrite(p_buf2, sizeof(char), strlen(p_buf2), p_file);
fflush(p_file);
fclose(p_file);
//MessageBox(NULL,"Completed!","Create Alert",MB_OK);
}/* end create_script_ps1 */
Quote from: Vortex on December 09, 2025, 11:26:23 AMAdditionaly, MrBcx created some useful applications too :
https://bcxbasiccoders.com/smf/index.php?topic=1443.0
Page created in 0.042 seconds with 15 queries.