我有一个用 C# 编写的小文本编辑器。
我需要以纯文本形式打开 HTML 文件(已完成),并检查正确的开始和结束标记。例如,如果我有这个:
<body> Text </body>
它应该说它是正确的,但如果我有:<body> <body>
它应该说它是错误的。
有什么方法可以通过 HTML Agility Pack 或 C# 中的 Regexp 来获得它?
我正在尝试使用PowerShell发送电子邮件,但需要使用TLS。我可以使用Send-MailMessage cmdlet做到这一点吗?
这是我的代码:
$file = "c:\Mail-content.txt"
if (test-path $file)
{
$from = "afgarciact@gmail.com"
$to = "<slopez@comfama.com.co>","<carloscu@comfama.com.co>"
$pc = get-content env:computername
$subject = "Test message " + $pc
$smtpserver ="172.16.201.55"
$body = Get-Content $file | Out-String
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = { return $true }
foreach ($recipient in $to)
{
write-host "Sent to $to"
Send-MailMessage -smtpServer $smtpserver -from $from -to $recipient -subject $subject -bodyAsHtml $body -Encoding ([System.Text.Encoding]::UTF8)
}
}
else
{
write-host "Configuración"
}
Run Code Online (Sandbox Code Playgroud)
非常感谢!
我试图识别文件何时为 PNG 或 JPG 并将其应用为壁纸。我正在使用SHGetFileInfo
来获取变量的类型名称.szTypeName
,但我刚刚意识到如果操作系统使用另一种语言,它就会发生变化。
这是我的代码:
SHFILEINFOW fileInfo;
UINT sizeFile = sizeof(fileInfo);
UINT Flags = SHGFI_TYPENAME | SHGFI_USEFILEATTRIBUTES;
// Getting file info to find out if it has JPG or PNG format
SHGetFileInfoW(argv[1], 0, &fileInfo, sizeFile, Flags);
Run Code Online (Sandbox Code Playgroud)
这就是我验证的方式:
if (wcscmp(fileInfo.szTypeName, L"JPG File") == 0)
{
//Code here
}
Run Code Online (Sandbox Code Playgroud)
当操作系统使用西班牙语时,该值会更改为“Archivo JPG”,因此我必须针对所有语言进行验证,这是没有意义的。
知道我还可以使用什么其他功能吗?
前几天我问了一个关于Prolog基本输入/输出的问题,但现在我有另一个问题.
我正在我的大学做一个与ITS诊断相关的Prolog项目.
假设我从一些基本事实开始:
lesion(herpes).
lesion(sifilis).
ampolla(herpes).
inguinal(herpes).
fiber(herpes).
headache(herpes).
picazon(herpes).
secrecion(sifilis).
Run Code Online (Sandbox Code Playgroud)
我有一些基本的测试规则:
its(herpes):-lesion(herpes), inguinal(herpes), picazon(herpes), fiber(herpes).
its(herpes):- ampolla(herpes), headache(herpes), picazon(herpes).
its(sifilis):-secrecion(sifilis), lesion(sifilis).
Run Code Online (Sandbox Code Playgroud)
我的问题是:
有什么方法可以通过使用问题而不是自己设置来保存每个参数?让我解释:
例如,我想声明一个空的事实:lesion(_)
然后问用户:
Do you have any lesion?
如果答案是肯定的,那么事实是:lesion(herpes).
在那之后,我会问另一个问题,直到得到一个论证的所有事实,所以我可以打印:X =疱疹或类似的东西.
这甚至可能吗?
任何帮助将不胜感激.
我收到More data is available
错误的GetComputerNameEx
功能,但不知道如何解决它.
这是我的代码:
int wmain()
{
COMPUTER_NAME_FORMAT nameType = ComputerNameDnsFullyQualified;
WCHAR computerName[MAX_COMPUTERNAME_LENGTH + 1];
DWORD size = ARRAYSIZE(computerName);
BOOL pcName = GetComputerNameEx(nameType, computerName, &size);
DWORD error = GetLastError();
if (pcName != 0)
{
wprintf("Computer name: %s\n", computerName);
}
else
{
wprintf(L"Error getting the name. Code: %li\n", error);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
不知道如何将size
变量设置为输出,因此我可以computerName
正确声明数组.
我正在尝试使用内置管理员帐户获取众所周知的 SID,CreateWellKnownSid
以便我可以在其他功能中使用它,但是当用作第一个参数时,我收到参数不正确的错误消息WinAccountAdministratorSid
;但是,如果我使用WinBuiltinAdministratorsSid
或WinBuiltinUsersSid
它有效。不知道发生了什么。
代码:
#include <Windows.h>
#include <wchar.h>
#include <LM.h>
#include <locale.h>
#pragma comment(lib, "Netapi32.lib")
#define MAX_NAME 256
VOID ShowError(DWORD errorCode)
{
//FormatMessageW
DWORD flags = FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS;
LPWSTR errorMessage;
DWORD size = 0;
if (!FormatMessageW(flags, NULL, errorCode, 0, (LPWSTR)&errorMessage, size, NULL))
{
fwprintf(stderr, L"Could not get the format message, error code: %u\n", GetLastError());
exit(1);
}
wprintf(L"\n%s", errorMessage);
LocalFree(errorMessage);
}
int wmain(int argc, WCHAR **argv)
{
_wsetlocale(LC_ALL, L"English"); …
Run Code Online (Sandbox Code Playgroud) 我试图搜索这个问题,但是在这里我找不到任何东西:
我正在尝试使用C代码和WinAPI中的RegSetValueEx
函数以及官方文档中定义的数据类型创建一个Registry值.我使用了这些定义:
PTCHAR regValueName = TEXT("dwValue");
DWORD regValueType = REG_DWORD;
BYTE regData = 1;
const BYTE *pRegData = ®Data;
DWORD dataSize = sizeof(regData);
Run Code Online (Sandbox Code Playgroud)
这个HKEY
值是由RegCreateKeyEx
我没有在这里显示的.
这是我使用该功能的方式:
setValueKey = RegSetValueEx(*pHandleResult, regValueName, reserved,
regValueType, pRegData, dataSize);
Run Code Online (Sandbox Code Playgroud)
setValueEx
是一种LONG
类型.
您可以注意到,我正在尝试创建一个DWORD
值,因此我将BYTE
regData值定义为1,然后将const BYTE
指针定义为该值,但它不起作用.该值已创建,但数据显示:
DWORD 32位值无效.
我知道BYTE
数据类型被定义为unsiged char
,但我尝试过'1'
但没有用.我也知道使用一个DWORD
值作为regData类型有效,但我想知道为什么官方数据类型不适用于DWORD
值.
谁能告诉我如何使用BYTE数据类型创建值?
我没有把所有的代码都放进去,但如果需要的话,我会的.
谢谢.
也许我没有做好搜索,但找不到任何WinAPI功能来修改桌面图标大小.如果没有,你能建议一种方法来实现吗?
我正在尝试使用 GetUserNameEx,但甚至无法编译它,因为我遇到了大量错误。这是我的代码:
#include <Windows.h>
#include <Secext.h>
#include <tchar.h>
#include <wchar.h>
#pragma comment(lib, "Secur32.lib")
int wmain(int argc, WCHAR *argv[])
{
//GetUserNameEx()
EXTENDED_NAME_FORMAT nameFormat = NameDnsDomain;
WCHAR nameExtended[256 + 1];
DWORD sizeExtended = 256 + 1;
if (GetUserNameEx(nameExtended, &sizeExtended))
{
wprintf(L"%s\n", nameExtended);
}
else
{
wprintf(L"Error code: %lu\n", GetLastError());
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这些是我在尝试编译时遇到的错误:
你能帮助我吗?似乎编译器无法识别该函数。
编辑:我不能包含所有错误,因为大约有 48 个与代码无关,除了错误的函数调用。
我得到了这个代码:
int wmain(int argc, WCHAR *argv[])
{
HKEY hKey = HKEY_LOCAL_MACHINE;
LPCWSTR subKey = L"Example";
LPCWSTR pFile = L"C:\\Users\\Default\\NTUSER.DAT";
LONG loadKey = RegLoadKey(hKey, subKey, pFile);
if (loadKey != ERROR_SUCCESS) {
wprintf(L"Code: %li\n", loadKey);
} else {
wprintf(L"Mounted!\n");
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我知道我需要为我的呼叫过程启用 SE_RESTORE_NAME
和SE_BACKUP_NAME
,并且MSDN 上有一个示例,但无法理解。不知道把我需要的特权放在哪里。
任何人都可以向我展示如何合并所有这些并使RegLoadKey()
功能正常工作的示例吗?
有很多 MSDN 文档没有解释的变量,比如hToken
,等等。这就是我需要帮助的原因。